下面的關於none_of_manufacturer的Datalog規則旨在 列出那些航空公司沒有飛機的飛機制造商在其船隊 列表中。然而,下面的Datalog的片段並不完成它打算做的事情。我需要基於兩個表創建一個Datalog Query?
none_of_manufacturer(Man) :- aircraft_type(Model, Man, _), ¬ model_in_fleet(Model). model_in_fleet(Model) :- aircraft(_, Model, _).
我能做些什麼來解決上述問題?
我認爲一個建議的:
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。我們最終的結果是相同MD,因爲我們沒有一個MD平面,
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)的價值是{波音,空客,MD}。 – CoronA
基本上,它意味着返回沒有平原的製造商,所以只需MD。 – user3255780