05.06.2013 Views

Tools e ambienti per lo sviluppo di ontologie per il ... - CHERSI/libri

Tools e ambienti per lo sviluppo di ontologie per il ... - CHERSI/libri

Tools e ambienti per lo sviluppo di ontologie per il ... - CHERSI/libri

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

PROLOG e la conoscenza implicita<br />

Inserire <strong>il</strong> tito<strong>lo</strong> della tesi <strong>di</strong> laurea come intestazione<br />

Nelle regole e nei fatti talvolta è presente della "conoscenza implicita": essa è nel<br />

significato del pre<strong>di</strong>cato, ad esempio dati i fatti prima(a,b) e prima(b,c), la conoscenza<br />

implicita è prima(a,c) <strong>per</strong>ché prima è una relazione <strong>di</strong> or<strong>di</strong>ne, o nelle relazioni tra fatti<br />

<strong>di</strong>versi, ad esempio dai fatti e dalle regole evidenziati nei paragrafi precedenti si capisce<br />

che a Mario piacciono le maserati, e a Elena piacciono tutte le automob<strong>il</strong>i. Ma non c'è<br />

una regola o un fatto che <strong>di</strong>ca qualcosa del genere: se a Tizio piacciono le Automob<strong>il</strong>i, la<br />

Marca dell'automob<strong>il</strong>e preferita non è specificata. Pro<strong>lo</strong>g <strong>per</strong>mette <strong>di</strong> generare dei fatti,<br />

tramite <strong>il</strong> pre<strong>di</strong>cato assert(...), quin<strong>di</strong> potrebbe generare <strong>il</strong> fatto<br />

marca_preferita(<strong>per</strong>sona,marca), e poi elencar<strong>lo</strong>.<br />

Le regole relative ad Anna e Car<strong>lo</strong> fanno riferimento al tipo <strong>di</strong> auto, quin<strong>di</strong> se la regola è<br />

verificata (Pro<strong>lo</strong>g ha trovato la Marca dell'automob<strong>il</strong>e) si possono mo<strong>di</strong>ficare le due<br />

precedenti regole, come segue:<br />

piace(anna,auto):­ tipo(Automob<strong>il</strong>e,fam<strong>il</strong>iare),<br />

tipo(Automob<strong>il</strong>e,ut<strong>il</strong>itaria),<br />

assert(marca_preferita(anna,Automob<strong>il</strong>e));<br />

assert(marca_preferita(anna,Automob<strong>il</strong>e)).<br />

piace(car<strong>lo</strong>,auto):­ tipo(Automob<strong>il</strong>e,sportiva),Automob<strong>il</strong>e "ferrari",<br />

assert(marca_preferita(car<strong>lo</strong>,Automob<strong>il</strong>e)).<br />

Questo vale solamente <strong>per</strong> Anna e Car<strong>lo</strong>, <strong>per</strong> tutti gli altri occorre aggiungere (in coda)<br />

un'ulteriore regola:<br />

piace(X,auto):­tipo(Auto,_),X "anna",X "car<strong>lo</strong>",<br />

assert(marca_preferita(X,Auto)).<br />

Infine occorre scrivere le regole "procedurali" <strong>per</strong> eseguire <strong>il</strong> tutto, un esempio è <strong>il</strong><br />

seguente:<br />

121

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!