Prolog Syntax, Semantik und 4-Port

Werbung
Prolog als Datenbanksprache - Syntax
Prädikat
=Relation
=Prozedur
student(
student(
student(
student(
Konstanten
Integer
1000
1001
1002
1003
,
,
,
,
‘Anna‘
‘Rita‘
‘Peter‘
‘Peter‘
klein oder in ‘ ‘
Atom
, ‘Arm‘ ,
‘ti2‘
, ‘Reich‘ , ‘ti2‘
, ‘Reich‘ ,
‘ti2‘
, ‘Petersen‘ , ‘ti2‘
).
).
).
).
Tupel=Fakt
=Datensatz
Goal = Subquery
Keine Lücke !
?- student( M, V, _, _ ) .
Variablen anonyme Variablen
Datenbanken und Informationssysteme 1
-
WS 2002 / 03
-
Prof. Dr. Böttcher - S. Prolog / 1
Antworten durch Variablenbindung
Konstanten
Integer
Atom
student( 1000 , ‘Anna‘ , ‘Arm‘ ,
?- student(
M ,
‘Peter‘ ,
_
‘ti2‘ ) .
,
_
Unifikation
scheitert
) .
student( 1002 , ‘Peter‘ , ‘Reich‘ ,
‘ti2‘ ) .
student( 1003 , ‘Peter‘ , ‘Petersen‘ , ‘ti2‘ ) .
Unifikation
bindet:
M=1002
…
Anonoyme Variablen _ und _ können verschieden gebunden werden
Datenbanken und Informationssysteme 1
-
WS 2002 / 03
-
Prof. Dr. Böttcher - S. Prolog / 2
Prolog als Datenbanksprache - Syntax
Regel:
Head = Regelkopf = View
Goal = Subquery
Subquery
pflichten( M, V, N, S, F ) :- student( M, V, N, S ) , kurs( S, F ) .
?- pflichten( 1000 , _ , _ , _ , F ) .
Anfrage = Query
Datenbanken und Informationssysteme 1
-
WS 2002 / 03
-
Prof. Dr. Böttcher - S. Prolog / 3
Prolog als Datenbanksprache - Syntax
Regel:
Head = Regelkopf = View
Goal = Subquery
Subquery
pflichten( M, V, N, S, F ) :- student( M, V, N, S ) , kurs( S, F ) .
?- pflichten( 1000 , _ , _ , _ , F ) .
Variablenbindung für Ein- und Ausgabeparameter
Transport der Variablenbindung innerhalb einer Regel
Datenbanken und Informationssysteme 1
-
WS 2002 / 03
-
Prof. Dr. Böttcher - S. Prolog / 4
Deklarative und prozedurale Semantik
Prolog:
pflichten( M, V, N, S, F ) :- student( M, V, N, S ) , kurs( S, F ) .
Prädikatenlogik
pflichten( M, V, N, S, F ) <= student( M, V, N, S ) Λ kurs( S, F ) .
falls
und
Relationale Algebra
pflichten( M, V, N, S, F ) := student
|X|
kurs
4 = 1
SQL
Create view
Pflichten
as select * from student S, kurs K
where S . S = K . S
Datenbanken und Informationssysteme 1
-
WS 2002 / 03
-
Prof. Dr. Böttcher - S. Prolog / 5
Prozedurale Semantik : 4 Port-Modell
pflichten( M, V, N, S, F ) :- student( M, V, N, S ) , kurs( S, F ) .
?- pflichten( M, V, N, S, F ).
C C
F
C
E
E
E
R
R
R
F
C=Call
C
F
E=Exit R=Redo
Datenbanken und Informationssysteme 1
F
F=Fail
-
WS 2002 / 03
-
Prof. Dr. Böttcher - S. Prolog / 6
pflichten( M, V, N, S, F ) :- student( M, V, N, S ) , kurs( S, F ) .
void pflichten( M, V, N, S, F )
{ // call-Port von Student
AS = student . liesAlle( M, V, N, S ) ;
while ( Student1 = AS. next( ) )
{ // exit-Port von Student und call-Port von Kurs
AK = kurs . liesAlle( S, F ) ;
while ( Kurs1 = AK. next( ) )
{ // exit-Port von Kurs und call-Port von Ausgabe
Ausgabe( M, V, N, S, F ) ;
// fail-Port von Ausgabe und redo-Port von Kurs
}
// fail-Port von Kurs und redo-Port von Student
}
// fail-Port von Student
}
Datenbanken und Informationssysteme 1
-
WS 2002 / 03
-
Prof. Dr. Böttcher - S. Prolog / 7
Herunterladen