Ontology

Up: Corpus of Examples
Next: Geometry

Geometric Entities

Point-sets

Point: A point in three-dimensional space.

Point-set: A set of points.

Subsorts of "point-set":

Region: A normal, bounded, thickly connected point set with a piecewise smooth boundary. ("Thickly connected" means that the interior is connected.)

Surface: A simple surface is a point set homeomorphic to the closed unit disk. A surface is a connected point set that is the union of finitely many simple surfaces.

Curve: A simple curve is a point set homeomorphic to a closed interval. A curve is a connected point set that is the union of finitely many simple curves.

Other Geometric Entities

Distance: A measure of distance e.g. 1 foot.

Vectors.

Direction A unit vector e.g. "up", "east" etc.

Placement: A rigid motion from space to space, used to identify the position of an object at a given time.

Objects

Object: A rigid solid object.

Pseudo-object: Conceptually, a geometric entity (e.g. a point, a point-set, a direction) that "moves around" with the object, such as the hole of a donut, the point of a pencil, the center of mass of an object, the boundary of an object etc.

Generalized object: Either an object or a pseudo-object.

Situations

Situation: A physically possible snapshot of the universe.

Boolean fluent: A proposition that is true in some situations and false in others.

Non-boolean fluent: A function that take different values in different situations.

Clock times. Real-valued.

Histories

History: A progression of the world over a finite time interval. A function from the time interval to situations.

Event: A event occurs in a history.

Basic primitives

Temporal primitives

holds(S : situation; F : Boolean fluent) -- Predicate.

value(S : situation; F : Non-Boolean fluent) -- Function.

time(S : situation) : time. -- Function

[S : situation] in [H : history] -- Predicate

precedes(S1,S2 : situation ; H : history) -- Predicate.

same_history(S1,S2 : situation) -- Predicate

occurs(E : event; H : history) -- Predicate.

start(H : history) : situation -- Predicate.

end(H : history): situation -- Predicate.

subhistory(H1, H2 : history) -- Predicate. H1 is H2 restricted to a subinterval.

join(H1,H2 : history) : history -- Function. The history that starts as H1 and continues as H2.

objects(H : history) -- Function. The objects in history H.

motion(O : object; H : history) : history -- Function. The motion of O in H.

motionless(O : object; history H) -- Predicate.

reverse(H : history) : history -- Function. H running in reverse.

Physical primitives

shape(O : g_object) : point-set -- Function. The point-set occupied by O in some stardard position. If O is a true object, then shape(O) is a region.

place(O : g_object) : fluent[point-set] -- Function. The point-set occupied by O in the current situation.

placement(O : g_object) : fluent[placement] -- Function. Mapping from the standard position of O to its position in the current situation.

image(PS : point-set; PL : placement) : point-set -- Function. Thus, for any generalized object O and situation S
place(O,S) = image(shape(O),value(S,placement(O))))

source(O : g_object) : object -- Function. Maps O to the true object that "anchors" O. Thus, for any generalized object O and situation S,
placement(O) = placement(source(O)).

External Forces

Forces by an external agent. These are viewed as distinct from forces that occur in the interaction of objects.

Notational Conventions

Let W(PS1 ... PSk) be a predicate over point-sets. Then, if O1 ... Ok are generalized objects, then W(O1 ... Ok) is defined to be W(shape(O1) ... shape(Ok)).

W*(O1 ... Ok) is defined to be the Boolean fluent satisfying
holds(S,W*(O1 ... Ok)) < = > W(value(S,place(O1)) ... value(S,place(Ok))

For instance if O1 and O2 are objects, then "sphere(O1)" means that the shape of O1 is a sphere, and "rcc_EC*(O1,O2)" denotes the fluent that is true in situations where O1 and O2 abut.

Similarly, let F(PS1 ... PSk) be a function over point-sets. Then, if O1 ... Ok are generalized objects, then F(O1 ... Ok) is defined to be F(shape(O1) ... shape(Ok)).
F*(O1 ... Ok) is defined to be the non-Boolean fluent satisfying
value(S,F*(O1 ... Ok)) = F(value(S,place(O1)) ... value(S,place(Ok))

If F(PS) maps a point-set to a point-set, and O is a generalized object, then F+(O) maps O to the generalized object whose shape is F(shape(O)) and whose source is O.

For instance let O1 and O2 be objects. Then "volume(O1)" is the volume of the shape of O1. The term "distance*(O1,O2)" is the non-Boolean fluent whose value in S is the distance between the regions occupied by O1 and O2 in S. The term "boundary+(O1)" is the pseudo-object of the boundary of O1.

These rules apply recursively for complex terms with embedded function applications.