database - 如何在Prolog中进行参数搜索?

标签 database search prolog

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

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

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

最佳答案

不是数据库。您在这里写的是:

pentium_g4400 is a processor, given 'intel' is a brand, 'pentium' is a family, 'g4400' is a series, etc.

数据库是一组事实。所以你可以写成:

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 的成员列表。

关于database - 如何在Prolog中进行参数搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47135216/

相关文章:

mysql - 来自mysql的随机数据

database - 如何转义vertica(vsql)中字符串中的引号?

Prolog 删除功能 - 几乎可以工作

prolog - Prolog 中的 CLP(B) 加权 sat_count/3

java - Prolog 图可视化

java - 数据库 INSERT 未向表添加数据

php - Mysql用户崩溃的情况

elasticsearch - 查询以匹配Kibana中两个字段的内容

api - 否定选择http查询字符串(IS NOT)

在注册表中搜索键 - JScript