  |
In the
following, we will demonstrate how VISCO can be used to find an appropriate
BBQ place on a summer's day. Let us assume that you don't own a car. Therefore,
the BBQ place may not be too far away from a subway station; we are willing
to walk at most 800 meters. Further, the BBQ should take place at lake.
The graphical query editor of VISCO consists
of two main windows: the working window (left) and the buttons
window, which is used to select modes, display options etc. |
  |
Step
1:
The user selects the button for "Transparency
Film" and interactively creates one in the query editor's working area.
A transparency film (of an overhead projector, transparency for short)
represents a transformable aggregate with a local euclidian coordinate
system. Thus, a transparency film can be translated, scaled and rotated.
Special constraints regarding scalability and rotatability can be established
(see below). The created transparency film is currently arbitrary translate-,
scale- and rotatable. In VISCO, naive physics metaphors are used to
make the semantics of language elements more comprehensible and accessible
to users. The now created transp. film acts as the carrier for
further elements to be constructed on it. |
  |
Step
2:
The users changes the current mode of
the query editor to "Origin" (small black rectangle). An origin
represent a point object that has the position (0,0) w.r.t. to the local
coordinate system of the carrying transparency. Each transparency film
has exactly on origin. Additionally, the user requires by selecting the
"DB-C" button that the origin should match a point object in the spatial
database. The origin is considered as a special "Nail". A nail represents
a point object with an exact (quantitative) relative position w.r.t. the
coordinate system of the carrying transparency film (fixpoint). Because
there can be only one origin, the current mode of the editor has been automatically
changed from "Origin" to "Nail" (selected buttons are displayed yellow,
selectable buttons green, inactive buttons gray).
|
  |
Step
3:
By selecting the currently active operator's
icon from the buttons window, the iconic operator libary pops up.
The user choses the "Set Semantics" operator and applies it via
a keyboard gesture to the origin. Now, an other dialog appears, requesting
the user to select a number of "thematic" or "semantic" types for
the selected operator argument (origin) from a scrollable list of all known
semantic types. The user determines, that the origin must have the semantic
type "Subway Station" ("U-Bahn-Station" in German). |
  |
As a result
of the operator application, the origin is labeled appropriate. The "Set
Semantics" operator still remains the currently active operator in the
buttons window. |
 |
Step
4:
Currently, there are some restrictions
in the implementation. The VISCO prototype requires, that the transformation
matrix of a transparency film can be uniquely determined (e.g., for
an arbitrary translate-, rotatate- and proportionally scalable transparency
film, at least two fixpoints = nails are needed to calculate the actual
transformation matrix). Here, the user forbids the rotatability of the
whole transparency by selecting an operator from the iconic operator library
and applies it to the origin. |
  |
As a result
of the operator application, a little arrow is attached at the origin,
indicating a fixed orientation of the whole transparency. |
 |
Step
5:
In order to represent the constraint
that the BBQ place should not be to far away from the subway station (approx.
800 meters), the user selects and applies the operator "Create Epsilon
Enclosure" to the origin (the "Subway Station"). An epsilon enclosure is
an example of a so-caled derived object that will be computed during
execution of the query. However, because the origin has no degrees of freedom
w.r.t. the carrying transparency, the user could have also sketched an
polygonal "Constant Enclosure". We will see an example of a non-constant
derived epsilon enclosure later. |
  |
The user
can interactively specify the radius of the epsilon enclosure. As a result
of the operator application, the epsilon enclosure is visualiziaded as
a circle of the specfified radius. However, only epsilon enclosure
of point objects (origins, nails and marbles) are circles (see below).
One can think of an enclosure as a special meta object, enforcing
an inside constraint on all objects totally contained within the enclosure.
Enclosures can be translucent or opaque. An opaque enclosure (partially) ocludes
already drawn objects and therefore provides a way to specify spatial
"dont care" relationships between objects by disregarding their existence
if they are occluded ("visual abstraction"). The recognized spatial constraints
are "disjoint", "inside/contains" and "intersects". At the time
when a new object is created, it is checked whether any of these relationships
holds between the new object and any already present but not totally occluded
object. However, since we still have not specified the extent of the transparency
(see below), we don't know yet that the radius should be approx. 800 meters.
Everything drawn on an transparency film is always specified relative w.r.t.
to the metric / coordinate system of the film. |
  |
Step
6:
The user now starts to construct the lake
that should be found as a BBQ place within the given epsilon enclosure.
Therefore, he selects an apropriate modus in the buttons window and starts
to interactively create a polygon that should represent the lake.
Of course, this lake is a query object that should be found in the spatial
database. VISCO offers a compositional semantics for complex objects
like polygons. The degrees of freedom of a complex object like a
polygon can be discovered by considering the components of the object.
Here, the first segment of the lake should be a "Rubberband" segment.
A rubberband matches not only single straight line segments, but also arbitrary
polylines (chains) of straight lines (slightly simplified). The endpoints
of the rubberband shown are "Marbles". A marble represents a point
object with qualitative or unkown / vague position. The associated
naive physics metaphor makes this obvious (a marble can roll around).
A marble has to be contained in at least one enclosure, which is the case
here. Also, the rubberband is required to stay inside of the enclosure,
because an enclosure enforces inside constraints on the objects
contained within it. |
  |
Step
7 and 8:
The modus of the query editor can be
changed concurently while doing a compound interaction. E.g., the first
segment of a polygon should be a rubberband, between marbles, but the next
segment should be a straight line with exact length between a marble an
a nail. In order to demonstrate this, during the creation of the lake polygon,
the user changes to mode of the query editor from "Marble Rubberband
Polygon" to "Marble Telescope-Antenna Rubberband" (these are
the types for the components: point, segment, polygon or chain). He then
enters the next two segments as "Telescope Antennas". A telescope
antenna represents a straight line of arbitrary length. There are also
straight lines with given (exact), given minimal and given maximal length
available (see the modes in the buttons window). The now constructed polygon
represents (at this time of the query construction process) any polygon
of arbitrary shape in the database. However, one could also specifiy a
polygon with concrete geometric shape (e.g., an arbitrary quadrilateral
by using four antenna segments between marbles, but also rectangles by
constraining the angles between the antennas to right angles, etc.). |
  |
Step
9:
We still haven't said that the constructed
polygon should not represent any polygon, but a lake. We therefore specify
its semantics as already seen above to be of type "Lake, not shipable"
("Teich, nicht schiffbar" in German). |
  |
As a result
of this operator application, the polygon is labeled appropriate. |
 |
Step
10:
The last thing to do is to specifiy
the size (extent) of the transparency film. If we say that it must
be 2 x 2 km, then the radius of the epsilon enclosure is approx. 800 meters
from the origin, which is what we want. |
  |
A menu
pops such that the user can enter various parameters regarding the transparency
(e.g., extent, scalability, only proportionally scalable, scaling intervalls,
etc.).
As a result of the operator application,
the sides of the transparency are labeled with numbers indicating the extent
(here, 2 km x 2 km).
We are now ready to execute the query
by chosing "Execute" from the menu bar or by typing the command textually
into the command line. |
 |
The found
query matches are now listed in the "Query Execution and Result
Inspector", an other important component of the VISCO GUI. Each
single tile (showing a little map) in the left pane represents a query
match / result. By selecting it, the user can inspect a magnified version
of the match in the upper right pane. The position w.r.t. to the whole
map is indicated by the black transparent rectangle with the inscribed
circle shown in the right bottom pane. Various buttons control the search
process (of course, the search can be aborted). If the number of matches
(tiles) exceeds the available space, a new page will be created.
The user can than switch between these pages (forward, backward). An other
group of buttons is used to delete single tiles or even whole pages. Currently,
we have only a very small map (see right bottom pane). Therefore, only
five matches are found. |
|
Step
11:
If the map would be much larger (think
of a map containing a whole capital city), probably too many matches would
have been found. The user is therefore forced to refine his
query.
In our example, the user refines his query
by requiring that there should be some (at least one) broad-leaved trees
within the vicinity of the lake that could be used to protect the BBQ
grill and us if it would start to rain. In order to represent this additional
constraint, the user selects again the operator "Create Epsilon Enclosure",
but this time applies it to the whole lake polygon. As already seen before,
he interactively speciifes the radius of this enclosure (please note that
this enclosure is not a circle, but something know as a "buffer zone" in
the GIS literature). This enclosure represents the vicinity of the lake
and has an approx. radius of 70 meters. |
  |
As a result
of the operator application, the created epsilon enclosure is shown. Please
note that this enclosure is a derived object that changes its shape,
extent and position according to the argument polygon (the lake). Because
the lake has many degrees of freedom (shape, position, ...), so the derived
epsilon enclosure has. |
  |
Step
12:
The user changes the modus of the query
editor to "Marble" and creates a new marble within the newly created
epsilon enclosure. As already mentioned, a marble represents a point object
with qualitative (vague) position. |
 |
Step
13:
As already seen before, the semantic type
of the marble must be constrainted to be "Broad-Leaved Tree" ("Laubholz"
in German). |
  |
As a result
of the operator application "Set Semantics", the marble is labeled approriate.
We are now ready to execute the refined
query.
Only some of the five already found
matches (see above) should meet the additional constraints. |
 |
We
have now uniquely determined our BBQ place! |
 |
An other
tool (the "Map Viewer') can be used to inspect a found query match
more thoroughly. Each layer (semantic type) in the scrollable list on the
left side can be switched on or off. Single objects can be inspected by
selecting them, their type, their structure, etc. We also discover with
the "Map Viewer" that the found BBQ place is indeed located within
a public park. However, we could have stated this as an additional
requirement in our query. We also see how to get there by selecting the
subway station, the names of the roads to walk, and so on.
VISCO is still in its very early
days and has not been extensively been tested by other users or even been
evaluated yet. If you have any questions or comments, please feel free
to contact us. |