<table cellspacing="12" width="100%">
<tr><td colspan="2">
<table width="100%" bgcolor="#f0f0f8">
<tr><td align="center">
<h1>Topology: a quick intro</h1>

<table width="100%"><tr>
<td width="33%" align="left"></td>
<td align="center"><a to
<td width="33%" align="right"><a

<tr><td width="50%">
<table width="100%" bgcolor="#f0f0f8" cellspacing="4" cellpadding="4">
<tr><td>
<h4>OGC-SFS Geometries</h4>
As you already know, the standard representation of Geometries supported by any existing Spatial DBMS is based on the following SFS classes (non-topological):<ul>
<li>(MULTI)POINT</li>
<li>(MULTI)LINESTRING</li>
<li>(MULTI)POLYGON</li>
<li>GEOMETRYCOLLECTION</li>
</ul>
<h4>Topology</h4>
An alternative representation (<a graph</a>) is based on the following elements:<ul>
<li>a <b>NODE</b> simply is a notable point, and can be assumed to
be equivalent to SFS POINT.
<i>Examples</i>: <i>N1</i>, <i>N2</i>, <i>N3</i>, <i>N4</i>, <i>N5</i>
</li>
<li>an <b>EDGE</b> is an oriented path joining two nodes, and can
be assumed to be equivalent to SFS LINESTRING.<br>
<i>Examples</i>: <i>E1</i>, <i>E2</i>, <i>E3</i>, <i>E4</i>, <i>E5</i>,
<i>E6</i>, <i>E7</i>
</li>
<li>a <b>FACE</b> is a portion of the plane delimited by edges,
and can be assumed to be equivalent to SFS POLYGON.<br>
<i>Examples</i>: <i>F1</i>, <i>F2</i>, <i>F3</i>, <i>F4</i>
</li>
<li>a <b>TopoCurve</b> is a collection of one (or more) Edges, and can
be assumed to be equivalent to SFS MULTILINESTRING.</li>
<li>a <b>TopoSurface</b> is a collection of one (or more) Faces, and can
be assumed to be equivalent to SFS MULTIPOLYGON.<br>
<i>Example</i>: Faces <i>F2</i> and <i>F4</i> belongs to the same MultiPolygon.</li>
</ul>

</td><td>
<table>
<tr><td>
<img alt="topology-1">


<tr><td colspan="2">
<table width="100%" bgcolor="#f0f0f8">
<tr><td>
Constraints on Nodes:<ul>
<li>two (or more) Nodes can never overlap</li>
</ul>
Constraints on Edges:<ul>
<li>each Edge always has a and a this implies that any Edge is
and a may be the same: and in this case we have a Edge (aka Ring).
<i>Example</i>:
<li>an Edge cannot contain loops (or any other kind of self-intersection)</li>
<li>two (or more) Edges can intersect only where a Node is defined.
<i>Example</i>: Edges <i>E3</i>, <i>E4</i> and <i>E5</i> intersect exactely at Node
<li>no Node can overlap an Edge except than at its extermities</li>
</ul>
Representation of Faces:<ul>
<li>each Face is delimited by a set of Edges: <i>Example</i>: Face <i>F3</i>
is delimited by Edges <i>E2</i>, <i>E5</i>, <i>E4</i> and
<li>a Face can be delimited by a single Edge: <i>Example</i>: Face <i>F2</i>
is delimited by Edge
<li>a Face must always have an <i><u>exterior but can can legitimately have one (or more) <i><u>interior
(aka <i>holes</i>) at the same time.<br>
<i>Example</i>: Face <i>F1</i> is delimited by Edges <i>E1</i>, <i>E2</i>,
<i>E3</i> and <i>E7</i><ul>
<li>Edges <i>E2</i>, <i>E3</i> and <i>E7</i> represent the <i><u>exterior
<li>Edge <i>E1</i> represents an <i><u>interior
</ul>

</table>
<table width="100%"><tr>
<td width="33%" align="left"></td>
<td align="center"><a to
<td width="33%" align="right"><a