post on 10 Oct 2019 about 6703words require 23min
CC BY 4.0 (除特别声明或转载文章外)
如果这篇文章帮助到你,可以请我喝一杯咖啡~
Given a KB Restaurants.pl, which describes the distribution of branches of 10 well-known restaurants in Guangzhou.
For example, restaurant(ajukejiacai,2007,yuecai) means that ajukejiacai was founded in 2007 and is a restaurant of yuecai. branch(ajukejiacai,xintiandi) means that ajukejiacai has a branch in xintiandi. district(xintiandi,panyu) means that xintiandi is an area of panyu district.
Please formulate each of the following questions as a query using Prolog’s notation, pose it to Prolog, and obtain Prolog’s answer:
Please define the new relation below using Prolog and test it.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
?- ['Restaurants.pl','Rules.pl'].
true.
?- findall(R,branch(R,beigang),X).
X = [mixuebingcheng, huangmenjimifan, shaxianxiaochi].
?- setof(
| D,
| R1^R2^Y1^Y2^L1^L2^(
| restaurant(R1,Y1,yuecai),
| restaurant(R2,Y2,xiangcai),
| branch(R1,L1),
| branch(R2,L2),
| district(L1,D),
| district(L2,D)),
| R).
R = [haizhu, liwan, panyu, tianhe, yuexiu].
?- findall(
| MR,(
| numBranches(MR,MN),
| \+setof(
| R,
| N^(
| numBranches(R,N),
| MN > N),
| List)),
| X).
X = [hongmenyan].
?- setof(
| A,
| List^Len^(
| setof(
| R,
| branch(R,A),
| List),
| length(List,Len),
| Len>=2)
| ,X).
X = [bainaohui, beigang, dongpu, shiqiao, tianhebei, xintiandi, yongfu, yuancun].
?- findall(
| MYR,(
| restaurant(MYR,MY,T2),
| \+setof(
| R,
| T1^Y^(
| restaurant(R,Y,T1),
| MY>Y),
| List)),
| X).
X = [huangmenjimifan].
?- setof(R,N^(numBranches(R,N),N>=10),X).
X = [dagangxianmiaoshaoji, diandude, mixuebingcheng, muwushaokao, tongxianghui].
Rules.pl
1
2
numBranches(X,L):-setof(Branch,Year^Type^(restaurant(X,Year,Type),branch(X,Branch)),Z),length(Z,L).
sameDistrict(X,Y):-branch(X,Area1),branch(Y,Area2),district(Area1,Dist),district(Area2,Dist).
Restaurants.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
restaurant(mixuebingcheng,1998,drinks).
restaurant(muwushaokao,2003,barbecue).
restaurant(diandude,1993,yuecai).
restaurant(ajukejiacai,2007,yuecai).
restaurant(hongmenyan,2015,yuecai).
restaurant(dagangxianmiaoshaoji,2015,yuecai).
restaurant(huangmenjimifan,1935,lucai).
restaurant(shaxianxiaochi,1998,mincai).
restaurant(tongxianghui,2013,xiangcai).
restaurant(yangguofu,2007,dongbeicai).
branch(mixuebingcheng,wushan).
branch(mixuebingcheng,lujiang).
branch(mixuebingcheng,shipaixi).
branch(mixuebingcheng,yiyuannan).
branch(mixuebingcheng,beiting).
branch(mixuebingcheng,xintiandi).
branch(mixuebingcheng,beigang).
branch(mixuebingcheng,chentian).
branch(mixuebingcheng,chisha).
branch(mixuebingcheng,longdong).
branch(mixuebingcheng,zhucun).
branch(mixuebingcheng,shiqiao).
branch(muwushaokao,gangding).
branch(muwushaokao,shayuan).
branch(muwushaokao,heguang).
branch(muwushaokao,tangxia).
branch(muwushaokao,dongpu).
branch(muwushaokao,shengdi).
branch(muwushaokao,xiaogang).
branch(muwushaokao,tonghe).
branch(muwushaokao,diwangguangchang).
branch(muwushaokao,runzhengguangchang).
branch(diandude,huachengdadao).
branch(diandude,zhongshansi).
branch(diandude,huifudong).
branch(diandude,youtuobangshiguang).
branch(diandude,bainaohui).
branch(diandude,panfu).
branch(diandude,yangji).
branch(diandude,tianhebei).
branch(diandude,shiqiao).
branch(diandude,linhe).
branch(ajukejiacai,yongfu).
branch(ajukejiacai,xintiandi).
branch(ajukejiacai,shatainan).
branch(hongmenyan,xintiandi).
branch(hongmenyan,zhilanwan).
branch(dagangxianmiaoshaoji,yuancun).
branch(dagangxianmiaoshaoji,kecun).
branch(dagangxianmiaoshaoji,beishan).
branch(dagangxianmiaoshaoji,nanpudadao).
branch(dagangxianmiaoshaoji,xinshi).
branch(dagangxianmiaoshaoji,dongpu).
branch(dagangxianmiaoshaoji,huadong).
branch(dagangxianmiaoshaoji,fangcun).
branch(dagangxianmiaoshaoji,cencun).
branch(dagangxianmiaoshaoji,changxing).
branch(dagangxianmiaoshaoji,gaosheng).
branch(huangmenjimifan,siyoubei).
branch(huangmenjimifan,yuancun).
branch(huangmenjimifan,dongxiaonan).
branch(huangmenjimifan,dongxiaonan).
branch(huangmenjimifan,dongqu).
branch(huangmenjimifan,dalingang).
branch(huangmenjimifan,pazhou).
branch(huangmenjimifan,beigang).
branch(shaxianxiaochi,kangwangnan).
branch(shaxianxiaochi,beigang).
branch(shaxianxiaochi,luolang).
branch(yangguofu,xintiandi).
branch(yangguofu,dayuan).
branch(yangguofu,shishangtianhe).
branch(yangguofu,chebei).
branch(tongxianghui,bainaohui).
branch(tongxianghui,tianhebei).
branch(tongxianghui,yongfu).
branch(tongxianghui,shimaocheng).
branch(tongxianghui,hanting).
branch(tongxianghui,yuanyangmingyuan).
branch(tongxianghui,zhongshanyilu).
branch(tongxianghui,huizhoudasha).
branch(tongxianghui,kaifadadao).
branch(tongxianghui,maoshengdasha).
district(wushan,tianhe).
district(shipaixi,tianhe).
district(longdong,tianhe).
district(gangding,tianhe).
district(heguang,tianhe).
district(tangxia,tianhe).
district(dongpu,tianhe).
district(huachengdadao,tianhe).
district(youtuobangshiguang,tianhe).
district(bainaohui,tianhe).
district(tianhebei,tianhe).
district(linhe,tianhe).
district(yuancun,tianhe).
district(cencun,tianhe).
district(changxing,tianhe).
district(dalingang,tianhe).
district(shishangtianhe,tianhe).
district(chebei,tianhe).
district(bainaohui,tianhe).
district(hanting,tianhe).
district(yuanyangmingyuan,tianhe).
district(lujiang,haizhu).
district(yiyuannan,haizhu).
district(chisha,haizhu).
district(shayuan,haizhu).
district(xiaogang,haizhu).
district(runzhengguangchang,haizhu).
district(kecun,haizhu).
district(beishan,haizhu).
district(dongxiaonan,haizhu).
district(pazhou,haizhu).
district(huizhoudasha,haizhu).
district(beiting,panyu).
district(beigang,panyu).
district(xintiandi,panyu).
district(shiqiao,panyu).
district(zhilanwan,panyu).
district(nanpudadao,panyu).
district(maoshengdasha,panyu).
district(chentian,baiyun).
district(shengdi,baiyun).
district(tonghe,baiyun).
district(shatainan,baiyun).
district(xinshi,baiyun).
district(dayuan,baiyun).
district(zhucun,huadu).
district(huadong,huadu).
district(diwangguangchang,yuexiu).
district(zhongshansi,yuexiu).
district(huifudong,yuexiu).
district(panfu,yuexiu).
district(yangji,yuexiu).
district(yongfu,yuexiu).
district(siyoubei,yuexiu).
district(zhongshanyilu,yuexiu).
district(fangcun,liwan).
district(gaosheng,liwan).
district(kangwangnan,liwan).
district(shimaocheng,liwan).
district(dongqu,huangpu).
district(luolang,huangpu).
district(kaifadadao,huangpu).
Related posts