Demo voor de thesis presentatie Ik laat eerst de files zien met database en query. . Database file: demo.l.pro: (dit is de echte file; het commentaar wordt genegeerd door de parser). Demo presentatie Database: Regel1: een ouder van een ouder is een grootouder kind(X,Y), kind(Y,Z) :> grootouder(Z,X). Regel2: een grootouder die vrouwelijk is is een grootmoeder grootouder(Z,X), sexe (Z,vrouwelijk) :> grootmoeder(Z,X). De feiten: kind(wim, christine). kind(christine,elza). sexe(elza, vrouwelijk). Query file: demo.q.pro: Demo presentatie Query: is er een X die de grootmoeder is van Y. grootmoeder(X,Y). Dan laat ik het interactief menu zien: h : help ? : help q : exit s : perform a single inference step g : go; stop working interactively m : menu e : execute menu item qe : enter a query p : print the graphs De oplossing wordt dan stap per stap gezocht en uiteindelijk wordt de oplossing getoond met het closure path, daarbij aantonende dat dit closure pad niet slechts een theoretisch constructie is. (Ik laat alleen de oplossing zien hier). Solution: Substitution: [(_1?X,1$_$_2?Z)(_1?Y,1$_$_2?X)(1$_$_2?Z,2$_$_1?Z)(1$_$_2?X,2 $_$_1?X)(2$_$_1?X,wim)(2$_$_1?Y,christine)(2$_$_1?Z,elza)] Closure: (sexe(elza,vrouwelijk)./2,sexe(elza,vrouwelijk)./2) (kind(christine,elza)./2,kind(christine,elza)./2) (kind(wim,christine)./2,kind(wim,christine)./2) (kind(wim,christine),kind(christine,elza) :> grootouder(elza,wim)./2,grootouder(elza,wim)./2) (grootouder(elza,wim),sexe(elza,vrouwelijk) :> grootmoeder(elza,wim)./2,grootmoeder(elza,wim)./10) General rule: "sexe(X2,vrouwelijk),kind(X1,X2),kind(X3,X1) :> grootmoeder(X2,X3)." ***End solutions*** Ik herhaal deze oplossing met commentaar: De oplossing is een reeks substituties die op de query moeten toegepast worden. De cijfers zijn de ‘provenance’ information ; deze geeft de oorsprong van de triples aan. Solution: Substitution: [(_1?X,1$_$_2?Z)(_1?Y,1$_$_2?X)(1$_$_2?Z,2$_$_1?Z)(1$_$_2?X,2 $_$_1?X)(2$_$_1?X,wim)(2$_$_1?Y,christine)(2$_$_1?Z,elza)] Closure: (sexe(elza,vrouwelijk)./2,sexe(elza,vrouwelijk)./2) **** de vorige regel geeft aan dat het feit sexe(elza,vrouwelijk) bevestigd is geworden. **** (kind(christine,elza)./2,kind(christine,elza)./2) (kind(wim,christine)./2,kind(wim,christine)./2) (kind(wim,christine),kind(christine,elza) :> grootouder(elza,wim)./2,grootouder(elza,wim)./2) **** Vorige regel geeft aan als gegeven de rule en de feiten : kind(wim,christine)./2, (ouder(christine,elza)./2, dan kan geconcludeerd worden: grootouder(elza,wim)./2) **** (grootouder(elza,wim),sexe(elza,vrouwelijk) :> grootmoeder(elza,wim)./2,grootmoeder(elza,wim)./10) General rule: "sexe(X2,vrouwelijk),kind(X1,X2),kind(X3,X1) :> grootmoeder(X2,X3)." ***** Bovenstaande regel is de algemene regel voor het bepalen van een grootmoeder die werd afgeleid vanuit het inferencing proces. **** ***End solutions***