none_of_manufacturerの以下のDatalogルールは、 航空会社に航空機が搭載されていない航空機メーカーのリストを としたものです。下のDatalogの断片は、 が意図したものではありません。2つのテーブルに基づいてデータログクエリを作成する必要がありますか?
none_of_manufacturer(Man) :- aircraft_type(Model, Man, _), ¬ model_in_fleet(Model). model_in_fleet(Model) :- aircraft(_, Model, _).
これを修正するにはどうすればよいですか?
私は1つの提案を考えた:
none_of_manufacturer(Man) :- aircraft_type(Model, Man, _), ¬ model_in_fleet(Model, Man). model_in_fleet(Model, Man) :- aircraft(_, Model, _), aircraft_type(_ ,Man, _).
皆さんはどう思いますか?私はこの問題を解決できる技術を発見した
aircraft --------------------------- | reg | model | miles | |---------------------------| |G-CWQS |737-400C | 2945321 | |G-FDWC |737-400 | 506834 | |G-FXDC |737-400 | 34760 | |G-KLSD |737-400 | 590 | |G-UGHJ |380 | 4544 | -----------------------------
aircraft_type ------------------------------------- |model | manufacturer| no_engines | -------------------------------------| |727 | Boeing | 3 | |737-200 | Boeing | 2 | |737-400 | Boeing | 2 | |737-400C| Boeing | 2 | |737-500 | Boeing | 2 | |380 | Airbus | 4 | |747 | Boeing | 4 | |MD11 | MD | 3 | --------------------------------------
更新の下の表を添付しています。元のクエリが航空機のテーブルにないモデルの製造を返すことを考慮すると、この場合、次の行方不明の飛行機(727,737-200,737,500)とMD(MD11)はBoingになります。
none_of_manufacturer(Man) :-
aircraft_type(Model, Man, _),
!model_in_fleet(Model).
述語意志:私たちの最終的な結果は、あなたはすでに、独自の問題を解決したが、あなたの元のクエリが機能しなかった理由を詳しく説明するので、
Existing_manufacturer(Man):-aircraft_type(Model,Man,-),aircraft(_,Model,). returns the manufacturer of existing planes Boing and Airbus. Now if we were to use the previous query in the original none_of_manufacturer(Man) :- aircraft_type(_ ,Man, _), ¬ Existing_manufacturer(Man). Will calculate the difference and return only MD.
あなたの期待は何ですか?あなたのルールを読んで、私はnone_of_manufacturer(Man)の価値が{Boeing、Airbus、MD}と期待します。 – CoronA
基本的には平野のないメーカーが返却されますので、ただMDです。 – user3255780