例如,a有一个这样的“数据库”:

processor(pentium_g4400) :-
    brand('intel'),
    family('pentium'),
    series('g4400'),
    clock(3.3),
    socket('lga1151'),
    ram('ddr4'),
    cores(2),
    threads(2),!.

例如,如果我只想搜索“奔腾”系列或“lga1151”处理器。

最佳答案

那不是数据库。你在这里写的是:
pentium_g4400是一个processor,假设'intel'是一个品牌,'pentium'是一个family'g4400'是一个系列,等等。
数据库是一组事实。所以你可以写为:

processor(pentium_g4400,'intel','pentium','g4400',3.3,'lga1151','ddr4',2,2).

现在您可以查询'pentium'系列的处理器,例如:
processor(Proc, _, 'pentium', _, _, _, _, _, _).

其中_表示您对结果不感兴趣(如果您也想知道这些事实,也可以使用变量)。
如果某些属性是可选的,这种方法当然会不方便,等等。您还可以向每个处理器添加一个术语列表,例如:
processor(pentium_g4400, [brand('intel'),    family('pentium'),
                          series('g4400'),   clock(3.3),
                          socket('lga1151'), ram('ddr4'),
                          cores(2),          threads(2)]).

在这种情况下,您可以查询:
processor(Proc, Specs), member(family('pentium'), Specs).

所以现在我们寻找一个处理器Proc以便family('pentium')Specs列表的成员。

07-24 12:43