gpt4 book ai didi

prolog - 事实在知识库中只出现一次

转载 作者:行者123 更新时间:2023-12-02 04:44:05 26 4
gpt4 key购买 nike

我有这个 KB(知识库):

%artist(ArtistId, ArtistName, YearofDebut).
%album(AlbumId, AlbumName, YearOfRelease, Artists).
%song(AlbumId, Songname, Duration).

%artist/3
artist(1, 'MIEIC', 2006).
artist(2, 'John Williams', 1951).
artist(3, 'LEIC', 1995).
artist(4, 'One Hit Wonder', 2013).


%album/4
album(a1, 'MIEIC Reloaded', 2006,[1]).
album(a2, 'Best Of', 2015, [2]).
album(a3, 'Legacy', 2014, [1,3]).
album(a4, 'Release', 2013, [4]).

%song/3
song(a1, 'Rap do MIEIC', 4.14).
song(a2, 'Indiana Jones', 5.25).
song(a1, 'Pop do MIEIC', 4.13).
song(a2, 'Harry Potter', 5.13).
song(a1, 'Rock do MIEIC', 3.14).
song(a2, 'Jaws', 3.04).
song(a2, 'Jurassic Park', 5.53).
song(a2, 'Back to the Future', 3.24).
song(a2, 'Star Wars', 5.20).
song(a2, 'E.T. the Extra-Terrestrial', 3.42).
song(a3, 'Legacy', 3.14).
song(a3, 'Inheritance', 4.13).
song(a4, 'How did I do it?', 4.05).

我想要一个询问专辑是否是单曲的查询(只有一首歌)。

recentSingle(+AlbumId).

recentSingle(a1) ?
No

recentSingle(a4) ?
Yes

如何在整个知识库中搜索并检查它是否只出现一次?

回答:

recentSingle(AlbumId) :- album(AlbumId, _, Year, _),
Year > 2010,
\+ isNotSingle(AlbumId).


isNotSingle(AlbumId) :- song(AlbumId, Name1, _),
song(AlbumId, Name2, _),
Name1 \= Name2.

问候

最佳答案

尝试这样的事情

recentSingle(X) :- aggregate_all(count, song(X, _, _), Count), Count = 1.

这应该也行

recentSingle(X) :- aggregate_all(count, song(X, _, _), 1).

关于prolog - 事实在知识库中只出现一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34891204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com