了解如何在Prolog中使用arg/3和univ/2

了解如何在Prolog中使用arg/3和univ/2,prolog,Prolog,我在Prolog中有这个数据库,我试图返回亨利拥有的东西,以及谁拥有一辆汽车和一辆卡车。我已经想尽一切办法归还亨利的财产,但没有找到解决办法。我知道如何返回谁单独拥有一辆汽车或一辆卡车?-拥有(X,汽车(,,,)),但不能同时拥有。任何帮助都将不胜感激 owns(bill, car(ford, mustang, 1964)). owns(sue, car(pontiac, gto, 1967)). owns(george, car(honda, civic, 2013)). owns(betty

我在Prolog中有这个数据库,我试图返回亨利拥有的东西,以及谁拥有一辆汽车和一辆卡车。我已经想尽一切办法归还亨利的财产,但没有找到解决办法。我知道如何返回谁单独拥有一辆汽车或一辆卡车?-拥有(X,汽车(,,,)),但不能同时拥有。任何帮助都将不胜感激

owns(bill, car(ford, mustang, 1964)).
owns(sue, car(pontiac, gto, 1967)).
owns(george, car(honda, civic, 2013)).
owns(betty, truck(ford, f150, 2013)).
owns(henry, motorcycle(honda, goldwing, 2010)).

Prolog有一个关系数据模型,但只允许递归术语而不是原子,比如SQL,并且不给“列”命名。松散地:

╒═════════════╤═════════════╕ │ SQL │ Prolog │ ╞═════════════╪═════════════╡ │ table │ predicate │ │ record │ clause │ │ table name │ functor │ │ column │ argument │ ╘═════════════╧═════════════╛
Prolog有一个关系数据模型,但只允许递归术语而不是原子,比如SQL,并且不给“列”命名。松散地:

╒═════════════╤═════════════╕ │ SQL │ Prolog │ ╞═════════════╪═════════════╡ │ table │ predicate │ │ record │ clause │ │ table name │ functor │ │ column │ argument │ ╘═════════════╧═════════════╛
如何
findall/3
?像这样,
findall(拥有者,拥有者,拥有者)。
?-拥有者(henry,X)。
--现在
X
是henry
拥有的东西。
findall/3
怎么样?像这样,
findall(拥有者,拥有者,拥有者)。
?-拥有者(henry,X)。
--现在
X
是henry所拥有的。┼这张漂亮的桌子1英镑@prolog的DB限制在哪里?如果不是的话,最优雅的方式是什么包括SQL数据库还是使用内部数据库?@AnsPiter:limit:它在内存中。。。最优雅的界面。。。我想说,但它本身就是一门真正的语言,所以要学的东西很多。。。┼这张漂亮的桌子1英镑@prolog的DB限制在哪里?如果不是的话,最优雅的方式是什么包括SQL数据库还是使用内部数据库?@AnsPiter:limit:它在内存中。。。最优雅的界面。。。我想说,但它本身就是一门真正的语言,所以要学的东西很多。。。