[Talk-it] Access e tutte le sue varianti...
Federico Cozzi
f.cozzi at gmail.com
Fri Feb 20 12:45:56 GMT 2009
On Fri, Feb 20, 2009 at 1:29 PM, Federico Cozzi <f.cozzi at gmail.com> wrote:
> Ad esempio: highway=cycleway; access=destination; vehicle=no; moped=yes
> Sintatticamente è corretto - che vuol dire? Come si comporta per
> bicycle (=designated), motorcycle (=no), emergency (=?)?
> Qual è l'algoritmo con cui ho calcolato questi risultati? Siamo tutti
> d'accordo sui risultati? E sull'algoritmo?
Io propongo questo algoritmo, vediamo se siamo d'accordo qui in ML (se
sì, provo a documentarlo sul wiki):
Le tipologie di accesso (access, vehicle, motorcar, bicycle ecc.)
devono essere organizzate in un albero (speriamo che non sia
necessario un DAG!) così fatto:
Radice: access
Ecco gli altri nodi con i relativi genitori:
vehicle->access
motor_vehicle->vehicle
bicycle,horse->vehicle
foot->access
motorcar,motorcycle,moped,...->motor_vehicle
ecc.
L'assegnazione di un tag (es. access=no) deve essere fatta al nodo
corrispondente.
Una volta trasportati tutti i tag sull'albero, l'accedibilità con un
determinato mezzo si ottiene guardando il relativo nodo e
eventualmente risalendo l'albero fino a incontrare il primo tag (se è
un DAG, siamo nei casini).
Esempio: access=yes, vehicle=permissive, motor_vehicle=private, motorcar=no
Con l'algoritmo calcolo:
foot=yes (discende da access)
bicycle=permissive (discende da vehicle)
moped=private (discende da motor_vehicle)
motorcar=no (discende da motorcar)
Siamo tutti d'accordo su questo algoritmo e su questo calcolo? So che
può sembrare ovvio, ma (per deformazione accademica) le questioni di
semantica, sebbene ovvie, a volte mettono in luce nuovi aspetti.
Ad esempio ora ho capito che se l'albero dei veicoli non è un albero
ma un DAG (cioè ad esempio taxi discende da due nodi diversi che non
sono uno discendente dell'altro) l'algoritmo deve essere complicato
con una mescolanza (max o min?) dei valori.
Ad esempio, supponiamo che qualche pazzo decida che taxi discende sia
da motorcar che da psv (brutto esempio, ma potrebbero capitare casi
meno ovvi), e che motorcar=yes e psv=no: cosa si applica a taxi?
Ora inoltre ho anche capito come si devono mescolare i default con i
tag specifici: i default devono essere trasformati nella loro versione
generica (es. cycleway: access=no, bicycle=designated), poi quando si
incontra una cycleway con specificazioni addizionali bisogna
trasportare sull'albero prima i valori del default, poi quelli
specifici e infine si legge il risultato con l'algoritmo di sopra.
Ciao
More information about the Talk-it
mailing list