Geography Reference
In-Depth Information
4.2.2
An Algebraic Landmark Model
We choose an algebraic approach for specifying a formal model of landmarks. An
algebra consists of a type, a set of operations declared on the individuals of this
domain, and axioms specifying the semantics of these operations.
A simple example for an algebra is the algebra of natural numbers ,letussay
including 0. The operation of addition of two individuals a and b, (+)ab ,
is fully specified by the following axioms:
neutral element: (+) a 0 = a
associativity: (+) ((+) a b) c = (+) a ((+) b c)
commutativity: (+) a b = (+) b a
increment: i (0)=1 and (+) a i (b) = i ((+) a b) .
In our context an algebraic specification will cater for the type landmark , derived
from a property of landmarkness, and we will sketch and discuss operations on
landmarkness and their behavior. Perhaps we should mention here that this formal
model is independent from the language of the conversation, i.e., graphical or verbal,
in the same way as the algebra of natural numbers is independent from a notation in
arabic or roman numerals.
The formal model will be written here in the syntax of the functional program-
ming language Haskell . 3 We do not explain the details of the language here, but
even the unfamiliar reader should get the idea of the model from this approach.
Haskell provides an elegant way of formal modelling. It is fully typed but supports
polymorphism, e.g., talking about landmarkness of any type of entity in the spatial
database. Since it does not only specify operations (interfaces) but also their
semantics, Haskell, or more generally, functional programming languages are ideal
tools for specification and rapid prototyping, and have been successfully applied in
the geographic information domain for a while [ 5 , 13 - 15 , 58 , 65 ] .
For a start let us collect some data types that capture properties we have discussed
before. Landmarkness is a property of any entity to a degree, thus we first define a
data type representing landmarkness that we will attach later to all entities:
type Lns = Double
- a context-specific fuzzy membership value of landmarkness ([0 ::: 1])
3 http://www.haskell.org/ , last visited 3/1/2014.
 
 
 
 
Search WWH ::




Custom Search