Escolar Documentos
Profissional Documentos
Cultura Documentos
Discente: Docentes:
Andreia Sousa Mendonça Pedro Rangel Henriques
PG14233 Cristiana Araújo
1 Introdução
No âmbito da disciplina de Paradigmas da Programação II, irei desenvolver um projeto
em Prolog com base na ontologia, anteriormente desenvolvida, subordinada ao tema de
especialidades culinárias.
Com este trabalho tenciono abordar:
• Estado da arte da linguagem PROLOG;
• Identificar a metodologia implementada;
• Apresentação do programa desenvolvido.
1
2 Estado da Arte
A abreviatura Prolog significa Programming Logic. O Prolog é uma linguagem de
programação de alto nı́vel baseada em lógica formal. Ao contrário das linguagens
de programação tradicionais, baseadas na execução de sequências de comandos, o
Prolog baseia-se em definir e resolver formulações lógicas. Normalmente designa-se
o Prolog como uma linguagem declarativa ou linguagem baseada em regras porque
os seus programas consistem numa lista de factos e regras. É utilizada extensiva-
mente em aplicações de inteligência artificial, particularmente em sistemas de perı́cia.
[ProloginInfopédia, 2021]
2
3 Desenvolvimento
3
Tendo por base a Ontologia EspecialidadesCulinarias, que poderá ser vista na Figura 2, elaborei uma base de conhecimento
com vista à sua implementação em Prolog.
Grafo da Ontologia
2 %Base de Conhecimento E s p e c i a l i d a d e s C u l i n a r i a s
3 :− s e t p r o l o g f l a g ( a n s w e r w r i t e o p t i o n s , [ max depth ( 0 ) ] ) .
4
5 %c o z i n h a ( c o z i n h e i r o , r e c e i t a ) .
6
7 c o z i n h a ( a n d r e i a , babadecamelo ) .
8 cozinha ( andreia , moussedechocolate ) .
9 cozinha ( andreia , l e i t e c r e m e ) .
10 cozinha ( andreia , arrozdoce ) .
11 c o z i n h a ( a n d r e i a , pudim ) .
12 cozinha ( andreia , f a r o f i a s ) .
13 cozinha ( andreia , caldoverde ) .
14 cozinha ( andreia , sopapedra ) .
15 cozinha ( andreia , sopapeixe ) .
16 cozinha ( andreia , canja ) .
17 cozinha ( andreia , bolinhosbacalhau ) .
18 cozinha ( andreia , croquetes ) .
19 c o z i n h a ( a n d r e i a , chamucas ) .
20 cozinha ( andreia , arroztomate ) .
21 cozinha ( andreia , cuscus ) .
22 c o z i n h a ( a n d r e i a , massa ) .
23 c o z i n h a ( a n d r e i a , empadaocarne ) .
24 cozinha ( andreia , lasanha ) .
25 cozinha ( andreia , francesinha ) .
26 c o z i n h a ( marco , r a t a t o u i l l e ) .
27 c o z i n h a ( marco , b o l o n h e s a ) .
28 c o z i n h a ( marco , l a s a n h a v e g a n ) .
29 c o z i n h a ( marco , r i s o t o c o g u m e l o s ) .
30 c o z i n h a ( marco , q u i c h e ) .
31 c o z i n h a ( marco , f a l a f e l ) .
32 c o z i n h a ( marco , p o l e n t a ) .
33 c o z i n h a ( marco , c u s c u s v e g a n ) .
34 c o z i n h a ( marco , b u l g u r ) .
35 c o z i n h a ( marco , quinoa ) .
36 c o z i n h a ( guida , c a b i d e l a ) .
37 c o z i n h a ( guida , r o j o e s ) .
38 c o z i n h a ( guida , b a c a l h a u ) .
5
39 c o z i n h a ( guida , c a b r i t o ) .
40 c o z i n h a ( guida , p i z z a ) .
41
42
43 %a p r e c i a ( a p r e c i a d o r , r e c e i t a ) .
44
45 a p r e c i a ( marco , babadecamelo ) .
46 a p r e c i a ( margarida , m o u s s e d e c h o c o l a t e ) .
47 a p r e c i a ( augusto , l e i t e c r e m e ) .
48 a p r e c i a ( rosa , arrozdoce ) .
49 a p r e c i a ( camila , pudim ) .
50 aprecia ( carlos , f a r o f i a s ) .
51 a p r e c i a ( ana , c a l d o v e r d e ) .
52 a p r e c i a ( paulo , s o p a p e d r a ) .
53 aprecia ( isabel , sopapeixe ) .
54 a p r e c i a ( sandra , c a n j a ) .
55 a p r e c i a ( maria , b o l i n h o s b a c a l h a u ) .
56 a p r e c i a ( joao , c r o q u e t e s ) .
57 a p r e c i a ( t i a g o , chamucas ) .
58 a p r e c i a ( bruno , a r r o z t o m a t e ) .
59 a p r e c i a ( mateus , c u s c u s ) .
60 a p r e c i a ( margarida , massa ) .
61 a p r e c i a ( pedro , l a s a n h a ) .
62 a p r e c i a ( marcelo , f r a n c e s i n h a ) .
63 a p r e c i a ( marco , f r a n c e s i n h a ) .
64
65 %e I n g r e d i e n t e ( N om e I ng re d ie nt e , r e c e i t a )
66
67 e I n g r e d i e n t e ( l e i t e c o n d e n s a d o , babadecamelo ) .
68 e I n g r e d i e n t e ( ovos , babadecamelo ) .
69 e I n g r e d i e n t e ( amendoa , babadecamelo ) .
70
71 e I n g r e d i e n t e ( chocolate , moussedechocolate ) .
72 e I n g r e d i e n t e ( acucar , m o u s s e d e c h o c o l a t e ) .
73 e I n g r e d i e n t e ( ovos , m o u s s e d e c h o c o l a t e ) .
74 e I n g r e d i e n t e ( manteiga , m o u s s e d e c h o c o l a t e ) .
75
82 e I n g r e d i e n t e ( arroz , arrozdoce ) .
83 e Ingrediente ( leite , arrozdoce ) .
84 e I n g r e d i e n t e ( acucar , arrozdoce ) .
85 e I n g r e d i e n t e ( canela , arrozdoce ) .
86 e I n g r e d i e n t e ( limao , arrozdoce ) .
6
87 e Ingrediente ( sal , arrozdoce ) .
88
89 e I n g r e d i e n t e ( l e i t e , pudim ) .
90 e I n g r e d i e n t e ( porto , pudim ) .
91 e I n g r e d i e n t e ( acucar , pudim ) .
92 e I n g r e d i e n t e ( maizena , pudim ) .
93 e I n g r e d i e n t e ( ovos , pudim ) .
94
95 e I n g r e d i e n t e ( ovos , f a r o f i a s ) .
96 e Ingrediente ( chocolates , f a r o f i a s ) .
97 e I n g r e d i e n t e ( acucar , f a r o f i a s ) .
98
99
100 %p e r t e n c e R e c e i t a ( n o m e d a r e c e i t a , t i p o r e c e i t a ) .
101 p e r t e n c e R e c e i t a ( c a l d o v e r d e , sopa ) .
102 p e r t e n c e R e c e i t a ( sopapedra , sopa ) .
103 p e r t e n c e R e c e i t a ( s o p a p e i x e , sopa ) .
104 p e r t e n c e R e c e i t a ( canj a , sopa ) .
105
110 p e r t e n c e R e c e i t a ( a r r o z t o m a t e , acompanhamentos ) .
111 p e r t e n c e R e c e i t a ( c u s c u s , acompanhamentos ) .
112 p e r t e n c e R e c e i t a ( massa , acompanhamentos ) .
113
114 p e r t e n c e R e c e i t a ( empadarcarne , s a l g a d o s ) .
115 p e r t e n c e R e c e i t a ( lasanha , salgados ) .
116 pertence Receita ( francesinha , salgados ) .
117
118 }
7
3.2 Cláusulas
A Listagem 2 apresenta as Cláusulas criadas especificamente para esta base de conhe-
cimento, as quais permitem fazer algumas inferências.
Listing 2: Cláusulas
1
3 %L i s t a de i n g r e d i e n t e s de determinada r e c e i t a
4 l i s t a R e c e i t a s ( R e c e i t a , L) :−
5 f i n d a l l ( N om e I ng re d ie nt e , e I n g r e d i e n t e ( N om e I ng re d ie nt e ,
R e c e i t a ) , L1 ) ,
6 l i s t t o s e t ( L1 , L) .
7
8 %L i s t a de i n g r e d i e n t e s de determinada r e c e i t a
9 l i s t a R e c e i t a s 2 ( R e c e i t a ) :−
10 f i n d a l l ( N om e I ng re d ie nt e , e I n g r e d i e n t e ( N om e I ng re d ie nt e ,
R e c e i t a ) , L1 ) ,
11 l i s t t o s e t ( L1 , L) , w r i t e l n (L) .
12
13 %l i s t a R e c e i t a s 2 ( f a r o f i a s ) . c o d i g o P r o l o g
14
15 %L i s t a de sopas − r e p e t i r pra o u t r a s r e c e i t a s
16 l i s t a S o p a s (X) :−
17 f i n d a l l (X, p e r t e n c e R e c e i t a (X, sopa ) , LS ) ,
18 l i s t t o s e t ( LS , L) , w r i t e l n (L) .
19
20
21 %L i s t a de c o z i n h e i r o s e a s r e c e i t a s que e l e f a z − r e p e t i r pra o u t r a s
receitas
22 l i s t a C o z i n h e i r o R e c e i t a s ( C o z i n h e i r o ) :−
23 f i n d a l l (( Cozinheiro , Receita ) , cozinha ( Cozinheiro , Receita ) ,
L1 ) ,
24 l i s t t o s e t ( L1 , L) , w r i t e l n (L) .
25
26
27 %P e s q u i s a por r e c e i t a e i n d i c a o c o z i n h e i r o que a s c o z i n h a
28 l i s t a R e c e i t a C o z i n h e i r o s ( R e c e i t a ) :−
29 f i n d a l l (( Cozinheiro , Receita ) , cozinha ( Cozinheiro , Receita ) ,
L1 ) ,
30 l i s t t o s e t ( L1 , L) , w r i t e l n (L) .
31
32 %L i s t a o s a p r e c i a d o r e s de cada r e c e i t a
33 l i s t a A p r e c i a d o r e s R e c e i t a s ( A p r e c i a d o r ) :−
34 f i n d a l l ( ( Apreciado r , R e c e i t a ) , a p r e c i a ( Apreciador , R e c e i t a ) ,
L1 ) ,
35 l i s t t o s e t ( L1 , L) , w r i t e l n (L) .
8
3.3 Exemplos de questões
Terminado o programa em Prolog, construı́do com base na Ontologia ’Especialidades-
Culinarias’ já é possı́vel desenvolver questões ao universo da base de conhecimento e
explorar o conhecimento nela contido. Abaixo seguem alguns exemplos de possı́veis
questões:
Figura 3: Questão 1
Figura 4: Questão 2
Figura 5: Questão 3
9
Através da utilização da listaReceitas2, pode-se saber os ingredientes, por exemplo,
das farofias Como poderá ser visto na Figura 6.
Figura 6: Questão 4
Através da utilização da listaSopas, pode-se saber que sopas existem. Como poderá
ser visto na Figura 7.
Figura 7: Questão 5
Figura 8: Questão 6
10
Na listagem 3 e apresentado o código completo do programa em Prolog derivado
diretamente da Ontologia ’EspecialidadesCulinarias’, o qual foi enriquecido depois com
mais predicados e respetivas cláusulas para explorar o conhecido descrito nos factos
iniciais.
Listing 3: Código Completo do Programa
1
2 %Base de Conhecimento E s p e c i a l i d a d e s C u l i n a r i a s
3 :− s e t p r o l o g f l a g ( a n s w e r w r i t e o p t i o n s , [ max depth ( 0 ) ] ) .
4
5 %c o z i n h a ( c o z i n h e i r o , r e c e i t a ) .
6
7 c o z i n h a ( a n d r e i a , babadecamelo ) .
8 cozinha ( andreia , moussedechocolate ) .
9 cozinha ( andreia , l e i t e c r e m e ) .
10 cozinha ( andreia , arrozdoce ) .
11 c o z i n h a ( a n d r e i a , pudim ) .
12 cozinha ( andreia , f a r o f i a s ) .
13 cozinha ( andreia , caldoverde ) .
14 cozinha ( andreia , sopapedra ) .
15 cozinha ( andreia , sopapeixe ) .
16 cozinha ( andreia , canja ) .
17 cozinha ( andreia , bolinhosbacalhau ) .
18 cozinha ( andreia , croquetes ) .
19 c o z i n h a ( a n d r e i a , chamucas ) .
20 cozinha ( andreia , arroztomate ) .
21 cozinha ( andreia , cuscus ) .
22 c o z i n h a ( a n d r e i a , massa ) .
23 c o z i n h a ( a n d r e i a , empadaocarne ) .
24 cozinha ( andreia , lasanha ) .
25 cozinha ( andreia , francesinha ) .
26 c o z i n h a ( marco , r a t a t o u i l l e ) .
27 c o z i n h a ( marco , b o l o n h e s a ) .
28 c o z i n h a ( marco , l a s a n h a v e g a n ) .
29 c o z i n h a ( marco , r i s o t o c o g u m e l o s ) .
30 c o z i n h a ( marco , q u i c h e ) .
31 c o z i n h a ( marco , f a l a f e l ) .
32 c o z i n h a ( marco , p o l e n t a ) .
33 c o z i n h a ( marco , c u s c u s v e g a n ) .
34 c o z i n h a ( marco , b u l g u r ) .
35 c o z i n h a ( marco , quinoa ) .
36 c o z i n h a ( guida , c a b i d e l a ) .
37 c o z i n h a ( guida , r o j o e s ) .
38 c o z i n h a ( guida , b a c a l h a u ) .
39 c o z i n h a ( guida , c a b r i t o ) .
40 c o z i n h a ( guida , p i z z a ) .
41
42
11
43
44
45 %a p r e c i a ( a p r e c i a d o r , r e c e i t a ) .
46
47 a p r e c i a ( marco , babadecamelo ) .
48 a p r e c i a ( margarida , m o u s s e d e c h o c o l a t e ) .
49 a p r e c i a ( augusto , l e i t e c r e m e ) .
50 a p r e c i a ( rosa , arrozdoce ) .
51 a p r e c i a ( camila , pudim ) .
52 aprecia ( carlos , f a r o f i a s ) .
53 a p r e c i a ( ana , c a l d o v e r d e ) .
54 a p r e c i a ( paulo , s o p a p e d r a ) .
55 aprecia ( isabel , sopapeixe ) .
56 a p r e c i a ( sandra , c a n j a ) .
57 a p r e c i a ( maria , b o l i n h o s b a c a l h a u ) .
58 a p r e c i a ( joao , c r o q u e t e s ) .
59 a p r e c i a ( t i a g o , chamucas ) .
60 a p r e c i a ( bruno , a r r o z t o m a t e ) .
61 a p r e c i a ( mateus , c u s c u s ) .
62 a p r e c i a ( margarida , massa ) .
63 a p r e c i a ( pedro , l a s a n h a ) .
64 a p r e c i a ( marcelo , f r a n c e s i n h a ) .
65 a p r e c i a ( marco , f r a n c e s i n h a ) .
66
67 %e I n g r e d i e n t e ( N om e I ng re d ie nt e , r e c e i t a )
68
69 e I n g r e d i e n t e ( l e i t e c o n d e n s a d o , babadecamelo ) .
70 e I n g r e d i e n t e ( ovos , babadecamelo ) .
71 e I n g r e d i e n t e ( amendoa , babadecamelo ) .
72
73 e I n g r e d i e n t e ( chocolate , moussedechocolate ) .
74 e I n g r e d i e n t e ( acucar , m o u s s e d e c h o c o l a t e ) .
75 e I n g r e d i e n t e ( ovos , m o u s s e d e c h o c o l a t e ) .
76 e I n g r e d i e n t e ( manteiga , m o u s s e d e c h o c o l a t e ) .
77
84 e I n g r e d i e n t e ( arroz , arrozdoce ) .
85 e Ingrediente ( l e i t e , arrozdoce ) .
86 e I n g r e d i e n t e ( acucar , a r r o z d o c e ) .
87 e I n g r e d i e n t e ( canela , arrozdoce ) .
88 e I n g r e d i e n t e ( limao , a r r o z d o c e ) .
89 e Ingrediente ( sal , arrozdoce ) .
90
12
91 e I n g r e d i e n t e ( l e i t e , pudim ) .
92 e I n g r e d i e n t e ( porto , pudim ) .
93 e I n g r e d i e n t e ( acucar , pudim ) .
94 e I n g r e d i e n t e ( maizena , pudim ) .
95 e I n g r e d i e n t e ( ovos , pudim ) .
96
97 e I n g r e d i e n t e ( ovos , f a r o f i a s ) .
98 e Ingrediente ( chocolates , f a r o f i a s ) .
99 e I n g r e d i e n t e ( acucar , f a r o f i a s ) .
100
101
102 %p e r t e n c e R e c e i t a ( n o m e d a r e c e i t a , t i p o r e c e i t a ) .
103 p e r t e n c e R e c e i t a ( c a l d o v e r d e , sopa ) .
104 p e r t e n c e R e c e i t a ( sopapedra , sopa ) .
105 p e r t e n c e R e c e i t a ( s o p a p e i x e , sopa ) .
106 p e r t e n c e R e c e i t a ( canj a , sopa ) .
107
112 p e r t e n c e R e c e i t a ( a r r o z t o m a t e , acompanhamentos ) .
113 p e r t e n c e R e c e i t a ( c u s c u s , acompanhamentos ) .
114 p e r t e n c e R e c e i t a ( massa , acompanhamentos ) .
115
116 p e r t e n c e R e c e i t a ( empadarcarne , s a l g a d o s ) .
117 p e r t e n c e R e c e i t a ( lasanha , salgados ) .
118 pertence Receita ( francesinha , salgados ) .
119
120 %L i s t a de i n g r e d i e n t e s de determinada r e c e i t a
121 l i s t a R e c e i t a s ( R e c e i t a , L) :−
122 f i n d a l l ( N om e I ng re d ie nt e , e I n g r e d i e n t e ( N om e I ng re d ie nt e ,
R e c e i t a ) , L1 ) ,
123 l i s t t o s e t ( L1 , L) .
124
125 %L i s t a de i n g r e d i e n t e s de determinada r e c e i t a
126 l i s t a R e c e i t a s 2 ( R e c e i t a ) :−
127 f i n d a l l ( N om e I ng re d ie nt e , e I n g r e d i e n t e ( N om e I ng re d ie nt e ,
R e c e i t a ) , L1 ) ,
128 l i s t t o s e t ( L1 , L) , w r i t e l n (L) .
129
130 %l i s t a R e c e i t a s 2 ( f a r o f i a s ) . c o d i g o P r o l o g
131
13
137
143
149 %L i s t a o s a p r e c i a d o r e s de cada r e c e i t a
150 l i s t a A p r e c i a d o r e s R e c e i t a s ( A p r e c i a d o r ) :−
151 f i n d a l l ( ( Apreciado r , R e c e i t a ) , a p r e c i a ( Apreciador , R e c e i t a ) ,
L1 ) ,
152 l i s t t o s e t ( L1 , L) , w r i t e l n (L) .
14
4 Conclusão
O objetivo deste trabalho consistia em desenvolver um programa em Prolog, tendo por
base a ontologia, já desenvolvida, sobre EspecialidadesCulinarias.
Para a construção da minha base de conhecimento tive em conta, primeiramente a
construção de factos e a sua consequente atribuição de predicados, nomeadamente: que
receitas cozinham os diferentes cozinheiros? que apreciadores existem para cada re-
ceita? que ingredientes necessitam cada receita? e por fim a que categoria pertence
cada receita?
Uma vez que o Prolog é uma linguagem declarativa, posteriormente construi as diferen-
tes cláusulas para que fosse possı́vel efetuar consultas à minha base de conhecimento,
que é o propósito desta linguagem lógica.
O trabalho desenvolvido é uma amostra das potencialidades desta linguagem. No en-
tanto, penso que por se tratar de uma linguagem com uma notação intuitiva e rela-
tivamente simples poderá, sem dúvida, representar, na minha opinião uma mais valia
para o desenvolvimento do pensamento computacional, se implementado em crianças
no inı́cio da idade escolar.
15
Referências
[ProloginInfopédia, 2021] ProloginInfopédia (2021). Portoeditora.
[UniversityKent, 2021] UniversityKent (2021). Softwarefinder.
16