streetcomplete / StreetComplete

Easy to use OpenStreetMap editor for Android
https://streetcomplete.app
GNU General Public License v3.0
3.84k stars 349 forks source link

opening_hours and PH #1026

Closed BER319 closed 6 years ago

BER319 commented 6 years ago

Hello,

I have a problem with the registered opening_hours "https://www.openstreetmap.org/node/559904758" "Tu-Th,Su,PH 12:00-23:00, Fr,Sa 12:00-24:00". with the evaluation tool "http://openingh.openstreetmap.de/evaluation_tool/?EXP=Tu-Th%2CSu%2CPH%2012%3A00-23%3A00%2C%20Fr%2CSa%2012%3A00-24%3A00&lat=48.7769&lon=9.1844&mode=0&DATE=1451118180000", PH is not evaluated correctly. "Fr,Sa 12:00-24:00" overrides the PH rules. the right value should be "Tu-Th,Su 12:00-23:00, Fr,Sa 12:00-24:00; PH 12:00-23:00" or "Tu-Th,Su 12:00-23:00; Fr,Sa 12:00-24:00; PH 12:00-23:00".

thanks

matkoniecz commented 6 years ago

So, situation is that

Tu-Th,Su,PH 12:00-23:00, Fr,Sa 12:00-24:00

was set with expectations that public holidays on Friday will use PH rule. Instead Friday rule is used.

westnordost commented 6 years ago

Right, the expectation is that PH overrides other rules in this example. Solving this has highest priority.

However, how to solve it depends on how (possibly ambiguous) opening hours on opening hours signs should be interpreted. So, I would like to get some opinions on what one would expect if they see the following opening hours signs:

A1.

Mo-Su      8:00-12:00
Sa,Su,PH  14:00-16:00

Would you expect that it is open before noon on Sunday? Would you expect that it is open before noon on a public holiday?

A2.

Mo-Su  8:00-12:00
PH    14:00-16:00

Would you expect that it is open before noon on a public holiday?

B.

Mo-Su  8:00-13:00
PH    12:00-16:00

Would you expect that it is open before noon on a public holiday?

C.

Mo-Fr  8:00-18:00
We    14:00-18:00

Would you expect that it is open before noon on a Wednesday?

D.

Mo-Fr  8:00-12:00
We    14:00-18:00

Would you expect that it is open before noon on a Wednesday?

I also posted this on the forums to get some more input.

matkoniecz commented 6 years ago

ad A1 - it should be "Mo-Fr", not "Mo-Su" - right?

matkoniecz commented 6 years ago

ad A2 - obviously not (even if it would be office of Association of Pedantic Programmers)

ad B - the same, PH is obviously intending to override normal operating hours

ad C - no idea, I never encountered something like that. I would ask shopkeeper as I would consider mistake in preparing opening hours information to be more likely than such unusual opening hours.

ad D - the same as above

rugk commented 6 years ago

I assume "PH" is written like "public holiday" or so on a sign.

A1) to these two questions: yes and no A2) yes B) no C) no, and I would ask the ones who wrote that sign whether they are all right or if they want to confuse customers😉 D) yes

BTW good questionnaire you put up here. Maybe you can use some real survey service or so next time to make it a bit more professional and easier to evaluate.😉

matkoniecz commented 6 years ago

BTW, it should be possible (at least in theory) to detect all edits affected by this bug.

westnordost commented 6 years ago

ad A1 - it should be "Mo-Fr", not "Mo-Su" - right?

No, Mo-Su

ad D - the same as above

This is actually quite common at least in Germany and at least for the opening hours plates of certain banks. I.e. read differently: "Every workday 8-12, Tuesday and Thursday 14-16"

HolgerJeromin commented 6 years ago

Is this solution feasible: writing every weekday seperated with comma and after that add the PH after a semicolon: Mo-Fr 08:00-18:00, We 12:00-18:00, Sa,Su 08:00-12:00;PH 08:00-09:00

westnordost commented 6 years ago

Of course it would, but before I jump to solutions, I first want to find out what should be the solution. Because the solution should reflect the common sense understanding on how opening hours on signs should be interpreted on these edge-cases. Perhaps the common sense rule would be that opening hours on different days should only overwrite each other if the times specified overlap (C). Or maybe, public holidays should be interpreted always to overwrite previous rules - but then what if it is defined together with other weekdays? (A1, A2)

BER319 commented 6 years ago

Hello west northeast,

very good examples I think many of these examples can unfortunately interpret twice, as it already show the few answers.

A1, yes / no

if no holiday is specified in the first line, then only the second line is valid for holidays

but also

A1 yes / yes

since in the second line also weekdays of the first line are indicated one can consider the opening times also as additional opening times.

I do not think that these examples can be implemented unambiguously.

my issues are a bit simpler, there is clearly ;PH 12: 00-23: 00 to the end.

sorry for my translation english

BER319 commented 6 years ago

Sorry that was the wrong button

westnordost commented 6 years ago

I also understand German

my issues are a bit simpler, there is clearly ;PH 12: 00-23: 00 to the end.

Well, you read what you input from a opening hours sign, didn't you?

BER319 commented 6 years ago

Hallo westnordost, Ausgang war der oben genannte Fall einer erfassten Öffnungszeit mit SC. Die Zeiten wurden korrekt übernommen, doch leider führt die Reihenfolge der Öffnungszeiten im Datensatz dazu, das eine Auswertung ein anderes Ergebnis bringt wie gewünscht. Es wird der Feiertag welcher am Fr oder Sa liegt mit den Werten von einem normale Fr oder Sa überschrieben.

Wie schon vorgeschlagen sollte der Feiertag immer als letzter Wert erscheinen.

Leider führt das in einigen von dir gezeigten Beispielen wieder zu einem anderen Ergebnis. Selbst für einen Erfasser sind diese Beispiele nicht immer klar zu analysieren, wie ich ja auch schon für A1 versucht habe darzustellen.

westnordost commented 6 years ago

Ok, von den Antworten die ich bisher bekommen habe, zeichnet sich mir folgendes Bild:

  1. Wenn die Regeln sich nicht überschneiden (Tage + Zeiten), werden die angegebenen Zeiten normalerweise als zusätzlich interpretiert (siehe D)
  2. Wenn die Regeln sich doch überschneiden (Tage + Zeiten), werden die angegebenen Zeiten normalerweise als überschreibend interpretiert (siehe B, C)
  3. (Öffentliche Feiertage sind dann natürlich in jedem Fall als überschneidend mit jedem Wochentag zu bewerten, siehe B)

Das heißt, es steht fest dass ich schonmal ein Clustering implementieren kann, dass je nach Überschneidung entweder ; oder , als <rule_seperator> nutzt.

Bei der Frage ob Regeln in denen öffentliche Feiertage auftauchen grundsätzlich getrennt werden sollten, ungeachtet ob sie sich zeitlich mit den "normalen" Öffnungszeiten überschneiden, habe ich gemischte Antworten bekommen, besonders bei A2. Also ich tendiere dazu, öffentliche Feiertage immer hart von den übrigen Öffnungszeiten zu trennen. Was denkt ihr?


Ok, judging from the answers I got so far, it is clear that:

  1. If the rules do not intersect (weekdays + hours), the opening times are usually interpreted as additional (see D)
  2. If the rules do intersect (weekdays + hours), the opening times are usually interpreted as overwriting (see B, C)
  3. (Public holidays are of course to be interpreted always as intersecting with other weekdays, see B)

This means, that I can already start implementing a clustering which uses either ; or , as <rule_seperator> depending on whether there is an intersection in the times or not.

There doesn't seem to be a consensus on whether rules in which public holidays appear should always be interpreted as separated from "normal" opening hours, independent of whether the hours intersect or not. (See A1, A2) But well, I tend to say that public holidays could/should maybe always be interpreted as separate from the other opening hours on a sign. What do you think?


(P.S: Starting with the next message, I will write in English-only again, too much effort to write in both :-( )

rugk commented 6 years ago

But well, I tend to say that public holidays could/should maybe always be interpreted as separate from the other opening hours on a sign. What do you think?

:+1:

BER319 commented 6 years ago

Hallo Westnordost Ich würde allen deiner Vorschläge zustimmen. Alles andere macht keinen Sinn. Feiertage Immer extra, wir können ja nichts für unklare Angaben auf dem Öffnungszeiten Schild.

PS Deine App ist super, bitte lasse dich nicht entmutigen, auch wenn der Gegenwind Mal etwas größer ist, dein Weg ist auf alle Fälle richtig.

BER319

Hello westnortheast

I would agree with all your suggestions. Everything else does not make sense. Holidays Always extra, we can not do anything for unclear information on the opening hours sign.

PS Your app is great, please do not be discouraged, even if the headwind is a bit bigger, your way is definitely right.

BER319

westnordost commented 6 years ago

Thanks BER319 :-)

Still working on it though, had little time in the last days and want to make sure that the new logic is properly tested. The logic is a bit complex (to translate into OSM syntax). I already stated before that it is not possible for a user to input syntactically wrong opening hours but perhaps while I am at it, I will also implement a simple validation check whether the input is semantically correct (=unambiguous). There is one check I could make which would be to alert the user if he tries to enter two rows specifying times for the same weekday(s) but with overlapping times. I.e.

Mo-Fr  8:00-14:00
      12:00-17:00

... since I need to implement logic to find out if two rows overlap each other anyway.

Also, the change that I am going to make will make people happy that complained in previous threads that the app uses the <additional_rule_sepator> (=,) by default, because I will change it so that that rule separator will only be used in the cases where the weekdays overlap but not the times (= where it actually makes a difference). I.e. for

Mo-Fr  8:00-12:00
Tu,Th 14:00-16:00

or

Mo-Fr  8:00-12:00
      14:00-16:00