Die Datalog Regel unten für none_of_manufacturer war vorgesehen, diejenigen Flugzeughersteller aufzulisten, für die die Fluggesellschaft kein Flugzeug in ihre Flotte hat. Das Fragment von Datalog unten tut jedoch nicht, was es tun sollte.Ich muss eine Datalog-Abfrage basierend auf zwei Tabellen erstellen?
none_of_manufacturer(Man) :- aircraft_type(Model, Man, _), ¬ model_in_fleet(Model). model_in_fleet(Model) :- aircraft(_, Model, _).
Was kann ich mit der obigen Abfrage tun, um es zu beheben?
dachte ich an einen Vorschlag:
none_of_manufacturer(Man) :- aircraft_type(Model, Man, _), ¬ model_in_fleet(Model, Man). model_in_fleet(Model, Man) :- aircraft(_, Model, _), aircraft_type(_ ,Man, _).
Was denkt ihr? Ich habe die Tabellen im Anhang unter
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 | --------------------------------------
aktualisieren
ich eine Technik entdeckt haben, die das Problem lösen könnte. In Anbetracht der ursprünglichen Abfrage zurückgegeben die Herstellung von Modellen nicht in der Flugzeug-Tabelle, die in diesem Fall wäre Boing für die folgenden fehlenden Flugzeuge (727.737-200737.500) und MD für (MD11). Unser höchstes Ergebnis MD als wir haben keine MD-Ebene so
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.
Was sind Ihre Erwartungen? Wenn ich Ihre Regeln lese, würde ich erwarten, dass der Wert von none_of_manufacturer (Man) {Boeing, Airbus, MD} ist. – CoronA
Grundsätzlich ist es gedacht, den Hersteller zurückzugeben, von dem es keine Ebenen hat, also nur MD. – user3255780