Et puis l'API devrait abandonner le format XML (trop verbeux et trop
permissif), et passer au JSON (avec un schéma documenté pour les clés de
base)...

Ou une alternative comme Turtle (plus destiné à la lisibilité et le travail
par un lecteur humain, moyennant des conventions sur l'indentation en
faisant attention aux différences entre tabulations et espaces que certains
éditeurs de texte insèrent automatiquement ou remplacent dans un sens ou
l'autre et pas forcément avec les mêmes règles de conversion du tabulateur:
proscrire les tabulations, ou les imposer partout, une difficulté qui
existe aussi dans d'autres langages de programmation comme Python... mais
les utilisateurs du format Turtle le feront pour des éditions en masse et
devraient avoir des outils de travail adaptés)

Un autre format équivalent est le format INI (mais il y a nécessité de
créer des groupes pour factoriser les clés parentes (et utiliser alors un
séparateur conventionnel entre les clés préfixes ou les clés des paires
"clé1:clé2"=valeur", qui peut être le ":", un "/" ou un "\") : l'avantage
est qu'il est accessible aux débutants sans trop de contraintes sur les
éditeurs (moyennant une certaine redondance sur les clés parentes)

Pas besoin du XML (ou encore moins du SGML encore plus dificile à traiter
correctement), qui différencie attributs et contenus d'un élément, une
distinction à mon avis inutile, les contenus de balise n'étant que la
valeur d'une clé particulière (anonyme) dans un objet parent. Le XML n'a
d'intérêt que si on peut mélanger des schémas d'espaces de nom dans un même
document, et jouer avec les différentes options (comme "xml:whitespace") et
différentes formes pour l'échappement de caractères ou les entités nommées
et il est trop complexe/couteux à parser: sa verbosité est directement liés
à sa trop grande flexibilité. D'ailleurs XML est en perte de vitesse face à
JSON bien plus efficace (et permettant pourtant la gestion de schémas si on
en a besoin, en incluant les indicateurs de schémas au sein des données
dans un objet conteneur).

J'aime beaucoup JSON, mais sa version standard a aussi des contraintes un
peu gênantes, notamment les guillemets ou quotes obligatoires et qu'on
pourrait relâcher sur un format à peine plus flexible (tant que les clés ou
valeurs se limitent à des nombres ou des chaines sans virgule ni crochets
ou accolades et tant que les blancs sont "trimmables" et compressibles:
JSON permet l'indentation comme on veut ou automatique, on peut se passer
des guillemets ou quotes; si on veut des quotes ou guillemets dans les
valeurs, il leur faut un échappement simple; et on n'en a besoin que dans
les valeurs, pas dans les clés).

D'autres formats sont aussi envisageables, dont les listes de triplets RDF
(là encore il faut quelques règles de conversion pour assurer la bijection
des déclarations valides, mais ce n'est pas insurmontable): mais le RDF est
un excellent format "natif" plutôt destiné aux bases de données dans un
traitement automatique (car on y trouve pléthores de références uniques
sous forme de GUID, qu'un éditeur humain "lambda" aura beaucoup de mal à
lire, même si c'est certainement aujourd'hui le système le plus flexible
aux données structurées complexes). Le RDF dispose d'un langage de requêtes
standardisé par le W3C et fonctionne très bien avec les bases de donénes de
type "hash store" (dont Wikibase sur lequel se base Wikidata, qui pourtant
a un schéma de conversion en JSON, en plus de l'interface web de
présentation et contenant les outils de modifications sous forme de
javascript pour utiliser l'API de façon assistée).

L'API (sur le serveur) pourrait supporter différents formats (pas que le
XML), comme le font déjà des "API flexibles" telles celles pour Mediawiki
ou Overpass (que presque plus personne n'utilise en syntaxe XML pour les
requêtes et réponses, XML étant encore là juste pour la
compatibilité ascendante avec les outils existants qui ne s'attendent pas à
autre chose)...


Le jeu. 7 mai 2020 à 10:32, Yves P. <[email protected]> a écrit :

> > Cela ne dit pas comment les clés _1, _2 seront assemblées en une seule:
> en séparant les valeurs par des point-virgules, des virgules, des espaces
> ou rien du tout (concaténation simple).
> Pour moi c'était évident : concaténation simple :)
>
> >
> > L'usage actuel serait que des valeurs multiples sont dans des _1, _2,
> etc. séparés et que leur séparation par défaut serait alors le
> point-virgule (ce que fait déjà iD et certains éditeurs pour des valeurs
> multiples ou différentes après une fusion de deux objets: ces _2 sont
> plutôt l'indication d'une erreur ou ambiguïté à traiter manuellement,
> l'éditeur ayant été incapable de choisir entre des valeurs potentiellement
> incompatibles)…
> Je dois avoué que je n'ai pas regardé depuis un moment ce que produit iD :|
>
> > Mais alors cela ne résoud toujours pas le problème des valeurs longues
> où ce point-virgule "'implicite" sera faux (par exemple les balises
> "opening_hours" qui ont des règles spécifiques de séparation).
> Les DataItems peuvent (déjà ?) indiquer si le tag accepte des valeurs
> multiples.
> Si oui, la concaténation se fait avec un point virgule, sinon c'est une
> concaténation simple.
>
> Pour le cas de "opening_hours", ça ne fonctionne pas actuellement de toute
> façon.
>
> > Si OSM doit évoluer, c'est pour permettre des valeurs de balises
> "structurées".
> Andy Allan parle d'évolution de l'API en "douceur" ;)
> Ceci n'est donc pas probable pour la v0.7, peut-être la v2.0 ?
>
> __
> Yves
> _______________________________________________
> Talk-fr mailing list
> [email protected]
> https://lists.openstreetmap.org/listinfo/talk-fr
>
_______________________________________________
Talk-fr mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à