On Fri, Feb 20, 2009 at 4:18 PM, Alberto Nogaro <bartosom...@yahoo.it> wrote: >>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? > Forse bisognerebbe introdurre, nel caso di genitori multipli, l'introduzione > di una gerarchia tra i genitori, per definire a priori quale prevale sugli > altri in caso di conflitto. In assenza di gerarchia (o comunque una
Questo è il classico incubo della ereditarietà multipla nei linguaggi di programmazione ad oggetti. Le soluzioni sono varie e abbastanza complesse, ma la migliore è: vietarla ;-) (vedi Java, .NET) > qualunque regola di decisione basate sulla combinazione dei valori dei > genitori) non vedo altra soluzione che obbligare (un editor potrebbe fare la > verifica) il mappatore a definire esplicitamente un tag specifico per il > discendente E' una soluzione palliativa: sempre usando il "linguaggio" dei linguaggi di programmazione, stai eliminando il problema della ereditarietà multipla con un "sistema di tipi" che disambigui tutti i casi ambigui. Il problema è che nel caso di OSM il sistema di tipi vivrebbe solo nell'editor (JOSM, Potlatch), non nel "compilatore" (le API di upload sul database) e quindi è aggirabile facendo un upload diretto a mano. Per proseguire l'analogia, sarebbe come se il controllo dei tipi lo facesse solo Emacs (editor) e non il GCC (il compilatore). > As es., come tratteresti le condizioni di accesso multiple? Per esempio, ho > una strada che solo i proprietari sono autorizzati a percorrerla in auto, ma > solo per raggiungere la propria destinazione (access=private intersezione > access=destination). E ne ho un'altra in cui i proprietari possono > scorrazzare in lungo e in largo, mentre chiunque può percorrerla per > raggiungere la propria destinazione: (access=private unione > access=destination). Mi sembrano esempi allucinanti... ma esistono davvero? Quello che mi sembra strano è che, in informatica teorica, tipicamente l'insieme dei valori è chiuso per operazioni di unione/intersezione: nel nostro caso, mi sembra strano che "private" intersezione "destination" non sia "private", e "private" unione "destination" non sia "destination". Se così non fosse la soluzione standard è di "chiudere" l'insieme dei valori rispetto alle operazioni consentite, cioè aggiungere i risultati di tutte le combinazioni di intersezione/unione tra tutti i tag esistenti. Ma come detto sopra, non capisco se questo sia il nostro caso. > Un altro esempio che mi viene in mente, condizioni di accesso condizionate > da altri elementi oltre al tipo di veicolo. Un caso concreto: ho una strada > che in settimana può essere percorsa da tutti, la domenica solo dalle bici. > I tag tipo day_on=, day_off= non li posso usare, perché non si capisce a > quale nodo si riferiscano. Questo è verissimo! Infatti c'è una proposta per creare nuovi tag per risolvere questi problemi, cioè arricchire la "sintassi". Quello che mi premeva, però, è di chiarire la "semantica" dei tag già esistenti: pur essendo abbastanza poveri (come hai giustamente notato tu, alcune restrizioni non si possono esprimere) danno già luogo a situazioni abbastanza incomprensibili (vedi sovrapposizione di tag di default e tag specifici) Ciao _______________________________________________ Talk-it mailing list Talk-it@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-it