Overpass Abfrage (Hauptschlüssel ohne zwei Unterschlüssel)

Hallo Zusammen,

ich hätte gerne die Option einem Hauptschlüssel zu finden bei dem aber zwei Unterschlüssel fehlen.

Zum Beispiel, finde alle Restaurants für die noch keine Öffnungszeiten-Eigenschaft und auch noch keine Eigenschaft für die Küchenart angeben ist.

Im Wizard des overpass-turbo habe ich für dieses Beispiel folgende Syntax eingegeben:

amenity=restaurant and opening_hours!=* and cuisine!=*

Die Abfrage sieht dann so aus:

http://overpass-turbo.eu/s/oKQ

Irgendwie wird aber der erste Ausschluss (ohne Öffnungszeit) mit dem zweiten Ausschluss (ohne Küchenart) nicht kombiniert.

Gibt es dafür eine Lösung?

Danke & viele Grüsse
AB

PS: Ist die Betreffzeile des Threads vom Sinn her brauchbar, oder könnte man die Frage mit einer optimaleren Überschrift versehen?

Kannst du das mal an einem konkreten Beispiel festmachen und dafür beschreiben, was du erwartest und was du wirklich vorfindest?

Hmm, ich glaube da habe ich noch eine Nachfrage zum Verständnis. So wie du es ge-/beschrieben hast und so wie du die Abfrage formuliert hast, passt es doch?!
Zumindest finde ich mit deiner Abfrage alle amenity=restaurant bei denen weder Öffnungszeiten noch Küchenart getaggt sind, also “beides” fehlt.

@Harald, stimmt Du hast recht hier passt es ja :slight_smile: Das hatte ich hier gar nicht so im Detail kontrolliert :frowning:

@mmd, ich hatte aber letztens mal so eine Situation bei der es irgendwie nicht gepasst hat. Es war ein anderer Hauptschlüssel und andere Unter-Eigenschaften im Spiel. Muss mal überlegen, ob ich das wieder zusammenbekomme, oder ggf. dazu noch eine Notiz finde. Das kann aber etwas dauern. Vielleicht war die Logik zuletzt auch etwas anders. Mal sehen, ob ich das später nochmal rekonstruiert bekomme.

Bin ja schon froh, dass es hier beim Restaurant-Beispiel funktioniert.

AB

Solange du nichts anderes wolltest, z.B. alle Restaurant wo mindestens eins der beiden Untermerkmale getaggt ist bzw. fehlt*, dann passt’s ja.


amenity=restaurant and (opening_hours!=* or cuisine!=*)

Das wird so ausgewertet, dass alle Anforderungen erfüllt sein müssen. Ich nenne diesen Fall mal einfacher

A und B und C

Es werden ja alle POI gefiltert, nach amenity=restaurant. Ist ein POI mit amenity=restaurant getaggt, wäre für diesen POI diese Aussage wahr. Man kann wahr auch mit 1 darstellen, entsprechend falsch mit 0. Für einen POI ohne amenity=restaurant, also z.B. amenity=cafe, wäre die Aussage falsch, amenity=restaurant trifft ja nicht zu.

Damit bei Overpass-Turbo etwas angezeigt wird, muss die Formel A und B und C zu 1 ausgewertet werden können, also A=1, B=1, C=1. Sie sind durch und verbunden, also A muss wahr sein, B muss wahr sein und C muss wahr sein. Bei einem POI, der mit amenity=restaurant und cuisine=* getaggt ist, trifft Formel C nicht zu, da die Anforderung ist, dass cuisine nicht gesetzt ist. Mit gesetzter cuisine=* wird die Aussage cuisine!=* zu 0 ausgewertet, da sie nicht zutrifft. Da C=0 ist, wird der ganze Ausdruck 0, egal was A und B sind.

Beispiel-POI:
amenity=restaurant := 1
cuisine=asia := 0
Dann ist der ganze Ausdruck 0 und der POI wird nicht angezeigt.

amenity=restaurant := 1
opening_hours=Mo-Su,PH 10:00-22:00 := 0
Dann ist der ganze Ausdruck 0 und der POI wird nicht angezeigt.

Die Reihenfolge von A, B und C ist hier egal, C und A und B bzw. B und C und A sind dazu äquivalent.

Bei

amenity=restaurant and (opening_hours!=* or cuisine!=*)

ist der Unterschied, dass man or verwendet, also A und (B or C). B or C wird dann wahr, wenn eine der beiden Aussagen wahr ist. Also wenn man statt B und C Werte (0 oder 1) verwendet, ist 0 or 0 = 0 und alle anderen Fälle 1. Das heißt, wenn entweder opening_hours oder cuisine nicht gesetzt ist, wird A oder B wahr. Wenn dann noch amenity=restaurant gesetzt ist, wird die ganze Aussage wahr.

Beispiel-POI:
amenity=restaurant := 1
cuisine=asia := 0
Da opening_hours nicht gesetzt ist, wird die Teilformel (B oder C) wahr, und dann ist A und 1 wahr. Entsprechend mit opening_hours.

https://de.wikibooks.org./wiki/Einführung_in_die_Logik:_Aussagenlogik