Hi Eckhart,

On 15/06/2012 01:08, Eckhart Wörner wrote:
Hi Colin,

Am Freitag, 15. Juni 2012, 00:24:18 schrieb Colin Smale:
"If I were king" I would be looking for a system that:
* makes common cases easy
Extended conditions: ☑

* makes complex cases possible
Extended conditions: ☑

* makes each rule as standalone as possible (one sign -> one rule)
Extended conditions: ☑

* does not rely on the user's fluency in English grammar (knowledge of a
set of specific words, e.g. tags and functions, is fine)
Extended conditions: ☑

* uses grammatical constructions which are familiar to most people, or
easily learnt
Extended conditions: ☑

* has a grammar allowing for a user-extensible function repertoire
Extended conditions: ☑

* allowing user-defined functions to be stored in an external file
(accessible at entry and run time)
I'm not sure I get that one, but it sounds to me like you're trying to mix 
specification and implementation, which is just a bad idea.
You might be right about this. Of course it would be best to only use the specification at entry time. What I had in mind was the ability to share functions with the world without having them replicated millions of times through the database, which is what will happen if you put a "function" in a tag so you can reuse its value. Using an external file (i.e. not in the database - analogous to how mapnik/mkgmap style sheets are handled) will also not impose any standards on anybody so as not to anger a significant majority of OSM users. Editors can pick the files up dynamically and use what they choose to use. Maintaining a strict division between specification and implementation would require some kind of packaging. Languages like perl and python allow pre-compiled packages, but they also allow you to share scripts and execute them directly.

* fits comfortably with the key-value-pair paradigm of OSM
Extended conditions: ☑

* can produce a result in a variety of data types including at least
boolean, number, string
Please provide a use case.
The bulk of the discussion up to now has been about "access" type tags, producing a boolean value: can I or can't I use this road under the given conditions. Why limit it to boolean? Why not address the use case of "what is the maximum speed for vehicle X under these conditions" (returning a number) or "what are the opening hours of this amenity on a given date" (returning a string which can be parsed as a date, or returning an object containing some more date objects if you want to go further)?

* can use the value of other tags as variables
That's just a desaster waiting to happen.
Why do you think that would be such a disaster?

* can use other variables supplied at run time (e.g. weather, time,
vehicle type)
Extended conditions: ☑

* supports the usual comparision and numeric operations
Which "usual" comparison operations? '12 knots' < '35 mph' ?
The comparison operator here is "<" which is definitely "usual". Thanks for adding "unit conversions" to the list!

* supports string concatenation operation
name = (lang == 'de' ? 'Bahnhof von ' : 'Gare de ') + 'Lyon'
Please provide a use case.
Well, this specific example is already adequately covered in current tagging practise (name:fr=Gare de Lyon). It's more for completeness - if it wasn't there, I am sure someone will miss it. I wouldn't like us to paint ourselves into a corner by only supporting boolean operations.

I wonder if this discussion could also be useful to the "lanes" discussion in some way? Use cases for routers like "how many lanes does this road have", "am I allowed in lane 2" etc etc also need to be "dynamic" and show a lot of similarity to the basic road-level access business.


Eckhart

_______________________________________________
Tagging mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/tagging



_______________________________________________
Tagging mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/tagging

Reply via email to