Einbindung in Abfragesprachen

Das hier vorgestellte Modell soll nun praktisch angewendet werden. Dazu wird eine SQL-ähnliche Abfragesprache verwendet. Es wird von einem relationalen Datenmodell ausgegangen, in dem vage Regionen als atomare Objekte Tabelleneinträge der Datenbank dienen.
Z.B. könnte ein Angler auf die Idee kommen, eine Tabelle zu erstellen, die Gebiete mit Fischvorkommen enthält. Solch eine Tabelle könnte wie folgt aussehen :
Fischvorkommen
region Fisch ...
Region_1 Hecht ...
Region_2 Aal
...
Der Kern einer solchen Region enthält eine große Anzahl solcher Fische, während die Grenze wenige Exemplare des entsprechenden Fisches beherbergt.
Die Aggregationsfunktion sum stellt die wiederholte Anwendung der Vereining dar. So liefert die Anfrage :
select sum(region) from Fischvorkommen where Fisch = Hecht
eine einzige große Region, die die Gebiete mit Hechtvorkommen enthält.
Angenommen der Freund des Anglers ist aktiv im Umweltschutz tätig und hat eine Tabelle von verschmutzten Gebieten erstellt. Der Kern einer Region stellt ein stark verschmutztes Gebiet dar, wogegen ein leicht verschmutztes Gebiet eine Grenze so einer Region ist. Da Fische Schwermetalle aufnehmen und daher der Verzehr von Fischen aus Gebieten mit hohem Gehalt an Schwermetallen ungesund ist, möchte der Angler wissen, wo er möglichst unbekümmert seine Forellen fangen kann. Dazu stellt er die folgende Anfrage :

select sum(Fischvorkommen.region) intersection (complement(Verschmutzung.region))
from Fischvorkommen,Verschmutzung
where Fischvorkommen.Fisch=Forelle and Verschmutzung.art=Wasser and Verschmutzung.belastet = Schwermetall


Da der Angler am Wochenende einen Freund mitnehmen möchte, der ein ungeduldiger Öko-Freak ist, ist er nun an den Stellen interessiert, an denen ein großes Fischvorkommen ohne geringste Schwermetallbelastung existiert. Dazu stellt er folgende Anfrage :

select kernel(Fischvorkommen.region) from Verschmutzung, Fischvorkommen
where Fischvorkommen.Fisch=Hecht and not ( Fischvorkommen.region maybe intersects
select sum(region)
from Verschmutzung
where art=Wasser and belastet=Schwermetall )

Da der Angler sich leicht erkältet, hat er sich nun von der Wetterwarte eine Tabelle geholt, die Regengebiete enthält. Um nun möglichst im trockenen angeln zu können, stellt er die folgende Anfrage :
select sum(Fischvorkommen.region) difference sum(Regengebiet.region)
from Fischvorkommen,Regengebiet
where Fischvorkommen.Fisch=Karpfen

Da der Freund des Angler (der Öko-Freak) in der letzen Zeit Angler beobachtet hat, die in Gebieten fischen, wo angeln verboten ist, weil dort auch gefährdete Fischarten leben, möchte er einer Amtsperson mitteilen, in welchen Gebieten solche Leute zu finden sein werden. solche Gebiete könnten wie folgt beschrieben werden.

select kernel(Fischvorkommen.region) intersection Gefährdet.region
from Fischvorkommen,Gefährdet
where Gefährdet.Art = Fisch


Da Hechte kleinere Fische fressen und sich der Bestand an Hechten in der letzen Zeit stark erhöht hat, ist man an den Stellen interessiert, an denen sich Hechte und kleine bedrohte Fische einen gemeinsamen Lebensraum haben. Dort sollen dann Hechte abgefischt werden, um die bedrohten Fischarten zu schützen. ....

Für den nächsten Angelwettbewerb soll nun die mögliche Anzahl der Teilnehmer ermittelt werden. Dazu ist die Fläche wichtig, die innerhalb des Wettbewerbsgebiets liegt :
select min-area(region)
from Fischvorkommen
where Fisch=Forelle and region inside Wettbewerbsregion

wobei Wettbewerbsregion z.B. als alle Wassergebiete des Landkreises bestehen könnte.