Representatie van feiten in PROLOG
p6.li05p8.li09.p2
v2
li08
v4
li02 li
p5.li06.pl v3
vl
liOl
li04
p3li03p7li07p4
sie en premissen uitgebreid met een symbolische notatie
voor één of meerdere termen als argument:
C (t1, t2, t3)
P1 (t4, t5),
P2 (t6, t7, t8),
Pn (t11, t12)
C, P1, P2, Pn worden predikaatnamen genoemd, met
de termen t1, t2, enz. als argumenten.
Hierna zal blijken dat onderdelen van een PROLOG-
programma op overeenkomstige manier worden opge
bouwd en gesymboliseerd (voor het verdere verloop van
dit artikel is de behandeling van de predikatenlogica van
minder belang).
Wanneer een conclusie geen enkele premisse heeft
dat wil zeggen: zonder voorwaarde dan kunnen we
spreken van een „feit". Zo is een (relationele) database
op te vatten als een (uitgebreide) verzameling „feiten".
De punten-, lijnen- en vlakkentabellen van de relationele
database bij fig. 2 van het artikel van Van der Schans [1]
zijn dan ook als „feiten" te beschouwen. Hieronder volgt
nogmaals deze figuur:
In PROLOG wordt dit:
Feiten worden in PROLOG aangeduid met een predikaat-
naam, gevolgd door één of meerdere attributen als argu
ment.
Een punt wordt als feit als volgt gerepresenteerd:
punt naam, x-coördinaat, y-coördinaat, label)
De puntentabel is:
naam
X
y
label
p6
44.14
153.12
p8
92.38
160.60
paal
P2
132.75
166.82
P5
103.78
87.28
paal
P1
145.70
96.00
paal
P4
157.48
31.45
boom
P7
113.52
23.42
p3
70.85
15.82
punt p6, 44.14, 153.12, null
punt p8, 92.38, 160.60, paal
punt p2, 132.75, 166.82, null
punt p5, 103.78, 87.28, paal
punt p1, 145.70, 96.00, paal
punt p4, 157.48, 31.45, boom
punt p7, 113.52, 23.42, null
punt p3, 70.85, 15.82, null
Door voor een (nog) niet gekend of niet van toepassing
zijnde waarde van een argument de waarde „null" op te
nemen, volgen we de SQL-conventie.
Een feit uit de lijnentabel wordt in PROLOG gerepresen
teerd als:
lijn (naam, beginpunt, eindpunt, vlak-links, vlak-
rechts, label)
De lijnentabel is:
naam
bp
ep
vl
vr
label
Ii05
P6
P8
v3
v2
sloot
M09
p8
P2
v3
v4
sloot
M02
P8
P5
v4
v2
raster
Ii10
p2
P1
v3
v4
sloot
M06
P5
P1
v4
v1
raster
N01
P5
P7
v1
v2
heg
I i 04
P1
P4
v3
v1
heg
N07
P4
P7
v3
v1
heg
Ii03
p7
p3
v3
v2
heg
Ii08
P6
P3
v2
v3
sloot
In PROLOG wordt dit:
lijn
Ii05,
p6,
p8,
v3,
v2,
sloot
lijn
N09,
P8,
P2,
v3,
v4,
sloot
lijn
M02,
P8,
p5,
v4,
v2,
raster
lijn
Ii10,
P2.
P1.
v3,
v4,
sloot
lijn
N06,
P5,
P1.
v4,
v1,
raster
lijn
N01,
P5,
P7
v1,
v2,
heg
lijn
Ii04,
P1.
P4,
v3,
v1,
heg
lijn
Ii07,
P4,
P7,
v3,
v1,
heg
lijn
Ii03,
P7,
p3,
v3,
v2,
heg
lijn
N08,
P6,
p3,
v2,
v3,
sloot
Tenslotte wordt een feit uit de vlakkentabel gerepresen
teerd als:
vlak naam, label
De vlakkentabel is:
naam
label
v;2
weide
v4
bos
v1
akker
v3
woest
NGT GEODESIA 89 - 7/8
357