Skip to content
21 septembre 2016 / gallegre

Wikipédia, Wikidata et OpenStreetMap…

Salut,

Oui, je viens de rallumer le bouzin. Forcément, le moteur est froid depuis le temps, alors faudra pas s’inquiéter si ça cliquette un peu.

Ce post va me permettre de parler de mes trois projets favoris (ne me demandez pas le classement), et d’une nouvelle fonctionnalité qui me remplit de joie car elle tisse des liens entre les trois…

Sur toutes les versions de Wikipédia (jusqu’à plus ample informé), une nouvelle extension médiawiki vient d’être activée, sous le nom de Kartographer. Elle permet essentiellement d’afficher dans un widget Mediawiki donc sans « sortir » de Wikipedia, des objets géolocalisés sur une carte glissante, plus complexes que des simples marqueurs ponctuels comme c’était le cas jusqu’à maintenant. Pour cela, Kartographer implémente une nouvelle balise <maplink>, qui ouvre une carte dynamique (fond OSM), surchargée avec une couche vectorielle représentant le ou les objets à afficher.

La particularité intéressante de <maplink> est qu’elle permet deux types d’affichage, l’un lié à Wikidata et OpenStreetMap, l’autre indépendant.


Kartographer avec Wikidata/OpenStreetMap

Avignon, remparts conservés, source OSM

Avignon, remparts conservés, source OSM

Dans cette variante, Kartographer peut représenter tout « objet » correspondant à un élément Wikidata (donc avec un identifiant Q…).
pinpointS’il est localisé par un simple point dans Wikidata (coordonnées géographiques P625), il sera représenté comme un marqueur ponctuel (cette sorte d’épingle que vous connaissez bien).

Par contre, s’il existe un objet OSM (ou plusieurs) correspondant, et que cet objet OSM porte un tag wikidata=Q…, l’information sera récupérée et l’objet géographique sera affiché (way ouvert, fermé ou même relation). Pour résumer la propagation de l’info, cela donne : OpenStreetMap ⟶ Wikidata  ⟶ Wikipédia.

Deux exemples parmi d’autres :

Pour les Remparts d’Avignon, l’objet OSM correspondant (une relation) est utilisé implicitement ; c’est l’élément wikidata (Remparts d’Avignon) qui est référencé.

Pour profiter de la fonctionnalité, je vous encourage donc à ajouter le tag wikidata sur les objets OSM qui s’y prêtent ; voire à créer l’élément dans la base Wikidata s’il n’existe pas encore.

Attention, il y a un moissonnage quotidien des identifiants wikidata dans OSM, et un cache supplémentaire, ce qui fait que pour un tag wikidata nouvellement ajouté, il y a pour l’instant un délai de 24h à 48h avant que l’objet ne s’affiche dans un lien <maplink>. Ça devrait se réduire avec le déploiement définitif du service geoshapes, derrière Kartographer.

On pourrait se demander pourquoi se référer à un élément Wikidata plutôt que d’utiliser directement l’identifiant OSM de l’objet. L’intérêt est double. D’abord, renseigner un attribut Wikidata dans OSM  permet d’éviter de surcharger OpenSteetMap avec des attributs « externes » toujours plus nombreux, et renvoyer plutôt vers Wikidata qui a entre autres pour fonction de centraliser des identifiants vers des bases de références multiples.  Et accessoirement, on règle un problème récurrent avec OSM : les identifiants ne sont pas garantis comme pérennes, contrairement à Wikidata.

On profite ainsi dans Wikipédia du travail fait par les contributeurs OSM de façon relativement simple, avec l’aide de Wikidata comme projet pivot.

Kartographer autonome

Avigno, remparts historiques, source Wikipédia

Avignon, remparts historiques, source Wikipédia

La deuxième variante prévue par Kartographer permet d’ajouter des objets géométriques vectoriels (polylignes, polygones) au format GeoJSON, à partir par exemple d’un tracé manuel fait dans uMap ou dans geojson.io.

Pour reprendre les Remparts d’Avignon, le lien « Voir les enceintes romaine (rouge) et du 13e siècle (bleue) sur un plan d’Avignon » renvoie cette fois vers un plan (approximatif) de ces enceintes.  C’est la méthode naturelle pour représenter des « objets » que l’on ne trouvera pas dans OSM, par exemple des objets disparus ou invisibles (vestiges enfouis), ou même, à une autre échelle, des zones floues comme la limite de répartition de telle espèce végétale.


On a donc enfin dans Wikipédia, après Wikivoyage, la possibilité de représenter sur une carte dynamique des objets étendus pour lesquels une géolocalisation ponctuelle est trop limitée (typiquement, les remparts). J’espère que Kartographer va permettre d’améliorer les cartes et plans de Wikipédia, en permettant d’échapper aux cartes statiques, qui deviennent franchement obsolètes.

Avec un peu de chance, on pourrait aussi récupérer quelques nouvelles contributions croisées Wikipédia / Wikidata / OpenStreetMap. Sait-on jamais.

3 janvier 2015 / gallegre

Voyage en Unicode (2/14) – l’arabe

(où l’on fait mine de rien)

Nouvelle année, nouvelle motivation pour reprendre cette série (et non, je n’ai pas parlé de résolution).

L’année dernière, je vous parlais des systèmes d’écriture et de leur recensement dans la norme ISO 15924, qui est un standard parallèle à Unicode, mais évidemment lié à ce dernier. Notre point de vue d’occidental nous a habitués à l’alphabet latin, mais d’autres écritures plus ou moins exotiques introduisent des notions qu’il faut bien gérer si on vise un traitement universel des jeux de caractères. Parmi toutes ces écritures, l’une des plus proches, géographiquement et culturellement, est l’alphabet arabe. Il introduit cinq différences principales avec le latin :

  1. il s’écrit de droite à gauche
  2. il ne comporte pas de voyelles
  3. il ne fait pas de différence de casse (majuscules/minuscules)
  4. il comporte en revanche 4 formes pour chaque caractère, en fonction de sa position dans le mot
  5. il impose la ligature entre les caractères

Ces cinq caractéristiques doivent d’une façon ou d’une autre être gérées à la fois dans Unicode et dans les systèmes qui interagissent avec.

Mais avant d’examiner ces cinq points, notons quand même une similarité avec le latin : l’alphabet arabe est un outil commun à de nombreuses langues différentes : l’arabe, le farsi (persan), le kashmiri, le sindhi, l’ourdou, le kurde, sans oublier le turc jusqu’en 1928.

Sens d’écriture

C’est sans doute le point le plus évident, l’alphabet arabe s’écrit de droite à gauche, à l’inverse du latin :

يولد جميع الناس أحرارًا متساوين في الكرامة والحقوق.

(vous aurez bien sûr reconnu le début de la Déclaration universelle des droits de l’homme)

Cela force Unicode à gérer une propriété particulière : la direction d’écriture, qui est affectée à tout caractère référencé. Unicode possède aussi deux caractères de contrôle spéciaux, pour forcer cette direction : U+200E LEFT-TO-RIGHT MARK et U+200F RIGHT-TO-LEFT MARK.  À partir de là, on peut construire des textes « amusants », comme

Le texte ci-dessus utilise le mot الناس pour traduire « les hommes » (êtres humains).

Essayez de sélectionner à la souris le texte ci-dessus, y compris pour une zone enjambant la partie en arabe. Ce genre de situation arrive naturellement en arabe quand un nombre est intégré au texte, puisque les nombres sont écrits « à l’occidentale », c’est-à-dire en chiffres « arabes » et de gauche à droite. Avec les dates, on a donc ce type d’affichage :

التاريخ 14 تموز 1789م

Notez que même avec des chiffres arabes « orientaux », l’écriture des nombres se fait de gauche à droite :

پس از کودتای ۲۸ مرداد سال ۱۳۳۲، محمدرضا شاه به تثبیت قدرت خود پرداخت

Après le coup d’Etat du 28 Août 1332, le Shah consolidé son pouvoir (persan, traduit par Google Translate)

En fait, l’un des problèmes les plus compliqués avec Unicode est de gérer l’affichage, mais aussi la saisie, la sélection, etc. des textes bidirectionnels (BiDi). Pour cela, Unicode définit plus de 20 classes de direction, les deux principales étant L-to-R (gauche à droite) et R-to-L (droite à gauche).

Alphabets et abjads

Simplement pour mémo : comme l’écriture hébraïque, l’écriture arabe est un abjad, c’est-à-dire un alphabet sans voyelles. Les lettres sont uniquement des consonnes. Les sons voyelles peuvent soit se déduire du contexte (en particulier si on connaît le mot), soit être notés à l’aide de signes diacritiques.

L’alphabet latin comporte des consonnes et des voyelles, pourtant ces dernières sont relativement redondantes :

T·s l·s ·tr·s h·m··ns n··ss·nt l·br·s ·t ·g··x ·n d·gn·t· ·t ·n dr··ts.

Pour unicode, cela n’introduit pas de problème particulier, si ce n’est qu’il faudra, comme avec les lettres latines, permettre l’insertion de diacritiques « autour » du caractère principal.

Casse et formes de caractères

Ligature

15 septembre 2014 / gallegre

Voyage en Unicode (1/14)

Ça fait quelque temps que j’explore Unicode, essentiellement pour le plaisir. Les quelques articles qui vont suivre seront quelques extraits de mon carnet de voyage dans ces contrées exotiques et, il faut bien le dire, un peu intimidantes.
Bien sûr, les baroudeurs d’Unicode n’apprendront rien, mais j’espère que les néophytes s’acclimateront en douceur et partageront avec plaisir quelques unes de mes découvertes.

Unicode, c’est simple

La norme Unicode, c’est essentiellement un inventaire, le plus exhaustif possible, de tous les caractères possibles dans tous les systèmes d’écriture du monde. Évidemment, c’est un gros travail, et il n’est pas terminé puisque depuis les débuts de la norme (en 1991, peu ou prou), de nouvelles versions viennent périodiquement compléter l’état de l’art.

La première question, c’est de bien définir ce qu’est un caractère (au sens de la norme, bien sûr), et donc, ce qui peut entrer dans l’inventaire.
Par exemple, dans l’image suivante
fonts-sample-libreoffice
il est clair pour tout le monde qu’il s’agit de la lettre A, première lettre de l’alphabet latin, en majuscule.
La première ligne représente quatre variantes de style (de fonte pour nos amis typographes) de la même police pour le même caractère A, alors que la seconde représente quatre polices différentes.
Mais Unicode ne se préoccupe (normalement) pas de ces différences : le caractère A a un seul code normalisé, (codepoint en anglais) : U+0041 « LATIN CAPITAL LETTER A » mais plusieurs glyphes pour le représenter. En sus, un caractère est doté d’une multitude de propriétés, qu’on verra en détails par la suite. Par exemple, pour notre A, le catalogue peut nous apprendre (si besoin est) que c’est un caractère représentable graphiquement, que c’est une lettre, et que c’est une majuscule.

D’un autre côté, Unicode fait (heureusement) la distinction de casse : A (U+0041) et a (U+0061) sont bien représentés par deux codepoints différents, et la casse est explicitement une des propriétés d’un caractère.

Unicode, c’est compliqué

La forme et le fond

Avec les fontes et les styles, on peut donc avoir plusieurs glyphes pour représenter un seul caractère.
Mais ça se complique quand on constate que l’inverse est vrai aussi : ces trois caractères A Α А semblent à première vue le même. Ce n’est plus le cas si on les lit en contexte :

  1. Alphabet
  2. Αλφάβητο (en grec)
  3. Алфавит (en russe)

En général, l’initiale est représentée par le même glyphe pour représenter trois caractères distincts :

  1. U+0041 LATIN CAPITAL LETTER A
  2. U+0391 GREEK CAPITAL LETTER ALPHA
  3. U+0410 CYRILLIC CAPITAL LETTER A

On distingue donc les caractères selon leur système d’écriture, mais pas selon leur langue :  Alphabet (en français, anglais, allemand), Alfabeto (italien, espagnol, portugais) et Aakkoset (finnois) commencent tous par le même caractère U+0041 (LATIN CAPITAL LETTER A). De même pour Алфавит (russe) et Абетка (ukrainien) avec U+0410 (CYRILLIC CAPITAL LETTER A).

Tout s’explique…

249px-Venn_diagram_gr_la_ru.svgLe diagramme ci-dessus (source Wikimedia Commons, mate2code) représente les glyphes des trois alphabets, grec, latin et cyrillique, avec leurs intersections. Notre « A » est bien présent dans la zone commune aux trois. La raison profonde, c’est que les trois dérivent de l’alphabet phénicien, mais ceci est une autre histoire.
L’alphabet latin est partagé par la quasi-totalité des langues européennes, plus les langues orales transcrites par les Européens en question. Il a fallu donc l’adapter avec de multiples variations pour les différentes langues. Quelques exemples :

  • Ð, ð, Ø, Þ, þ, ß, ı et d’autres lettres additionnelles, spécifiques à certaines langues
  • é, à, ï, ñ, ô, ċ, İ   et d’autres lettres standard agrémentées de signes diacritiques
  • Æ, æ, Œ, œ, ß, et d’autres ligatures

Ces caractères ont donc rejoint l’alphabet « latin » moderne au sens large, même s’ils sont pour la plupart absents de l’abécédaire latin des Romains.

Les systèmes d’écritures

Unicode cherchant à classer les caractères, il est donc étroitement lié à un autre standard, ISO 15924, qui catalogue non pas les caractères mais les systèmes d’écriture. À ce jour, la norme en recense 171, chacun étant caractérisé par :

  • un code alphabétique sur 4 lettres, ex. “Latn
  • un numéro sur 3 chiffres, de type Classification Décimale, ex. 215
  • un nom anglais, ex. “Latin
  • un nom français, ex. “Latin

Le système de classification décimale « à trous » permet à ISO 15924 de regrouper les systèmes d’écriture par grandes familles, d’importances inégales. L’alphabet latin fait partie de la famille 2XX – écritures alphabétiques de gauche à droite . Curieusement, ISO 15924 lui a trouvé deux cousins :

  • Latf216 = latin (variante brisée) ou “Latin (Fraktur variant)”
  • Latg217 = latin (variante gaélique) ou “Latin (Gaelic variant)”

qui, eux, ne donnent pas lieu à des caractères différenciés dans Unicode.

Dans mon prochain article, je reviendrai sur cet inventaire des systèmes d’écriture, qui donne lieu à de beaux exotismes, tant spatiaux que temporels ! Pour les plus pressés, vous pouvez en trouver la liste complète sur le site dédié.

En résumé

En résumé, Unicode tient compte pour définir les caractères du système d’écriture (norme ISO 15924) mais en général pas des langues, ni des prononciations, ni des pays (variantes nationales d’une même langue). Pour mémo, ces aspects sont couverts par d’autres normes :

qui ne sont donc d’aucune utilité pour Unicode !😉

16 mai 2014 / gallegre

Digital ?

Quel est le problème ?

Comme beaucoup, je suis un peu agacé par l’utilisation croissante de l’adjectif digital pour signifier numérique, particulièrement dans des discours marketing creux associés à d’autres buzzwords franglais. De mon agacement, j’ai même tiré un petit strip humoristique quoique pédagogique, que j’ai placé ici ou là sur Twitter.

analogique_numerique_digital

J’essayais ainsi de signaler avec tact que « digital » est bien français mais signifie « qui se rapporte aux doigts » (du latin digitus, doigt, pas de surprise). L’utilisation dans le sens de numérique est tout simplement un anglicisme, pas franchement excusable ici, puisqu’on a un équivalent parfait et non ambigu. Au passage, en français comme en anglais, numérique, dans ce sens, s’oppose à « analogique ».

En anglais, le glissement de sens est naturel : on compte sur ses doigts, donc digit a pris le sens de chiffre (de 0 à 9) dans le langage commun, mais a gardé un sens savant proche de l’origine, regroupant les doigts des quatre membres (fingers et toes).

Digital

Ce qui me paraît un peu plus ridicule encore, c’est la tendance à justifier ce passage de digital en français sous le prétexte de désigner les avancées novatrices diverses, notamment les écrans tactiles (où on a le droit de mettre les doigts). En résumé, l’idée serait : digital = (numérique + tactile). Je ne voudrais montrer personne du doigt, mais le raccourci me semble un peu facile.

Pourtant les nouvelles interfaces sont plutôt moins digitales que les anciennes. La preuve en images :

interface digitale (comptez les doigts…),

interface digitale (comptez toujours…),

digitale aussi,

digitale, vous dis-je !

Au passage, si vous voulez un exemple d’appareil à interface digitale quoique 100% analogique, je vous conseille d’aller vous extasier sur le thérémine.

Qu’on plébiscite ou pas l’écran tactile, cette histoire de doigts n’est qu’une affaire d’interface avec la machine. Je ne sais pas si les doigts sont voués à rester longtemps notre interface prépondérante avec les ordinateurs, ou s’ils vont bientôt s’effacer au profit d’autre chose (lunettes à suivi oculaire, reconnaissance vocale, implants neuronaux), mais en tous cas, on ne peut pas dire que l’aspect digital soit une évolution de la plus criante actualité.

Numérique

Et si l’évolution de l’interface homme-machine est intéressante, ce qui est primordial, c’est l’aspect numérique des informations manipulées, qui rendent les savoirs numériques réellement différents des autres via :

  1. l’indépendance totale de l’information par rapport à son support ;
  2. sa duplication à coût nul et sans perte.

Ces deux propriétés permettent enfin de s’affranchir de toutes les barrières matérielles à la diffusion et au partage des savoirs. Restent les autres, économiques, idéologiques, ou ataviques. Le numérique nous fournit sur un plateau des nouvelles libertés fondamentales, alors je propose qu’on oublie un peu les épiphénomènes du digital pour se concentrer sur les enjeux du numérique.

18 janvier 2014 / gallegre

Compter en Unicode

Il y a apparemment 42 systèmes d’écriture des chiffres en Unicode 6.3 (actuel). Si on se concentre sur les zéros, voici la liste.

  1.  0  U+00030 DIGIT ZERO
  2.  ٠  U+00660 ARABIC-INDIC DIGIT ZERO
  3.  ۰  U+006F0 EXTENDED ARABIC-INDIC DIGIT ZERO
  4.  ߀  U+007C0 NKO DIGIT ZERO
  5.  ०  U+00966 DEVANAGARI DIGIT ZERO
  6.  ০  U+009E6 BENGALI DIGIT ZERO
  7.  ੦  U+00A66 GURMUKHI DIGIT ZERO
  8.  ૦  U+00AE6 GUJARATI DIGIT ZERO
  9.  ୦  U+00B66 ORIYA DIGIT ZERO
  10.  ௦  U+00BE6 TAMIL DIGIT ZERO
  11.  ౦  U+00C66 TELUGU DIGIT ZERO
  12.  ೦  U+00CE6 KANNADA DIGIT ZERO
  13.  ൦  U+00D66 MALAYALAM DIGIT ZERO
  14.  ๐  U+00E50 THAI DIGIT ZERO
  15.  ໐  U+00ED0 LAO DIGIT ZERO
  16.  ༠  U+00F20 TIBETAN DIGIT ZERO
  17.  ၀  U+01040 MYANMAR DIGIT ZERO
  18.  ႐  U+01090 MYANMAR SHAN DIGIT ZERO
  19.  ០  U+017E0 KHMER DIGIT ZERO
  20.  ᠐  U+01810 MONGOLIAN DIGIT ZERO
  21.  ᥆  U+01946 LIMBU DIGIT ZERO
  22.  ᧐  U+019D0 NEW TAI LUE DIGIT ZERO
  23.  ᪀  U+01A80 TAI THAM HORA DIGIT ZERO
  24.  ᪐  U+01A90 TAI THAM THAM DIGIT ZERO
  25.  ᭐  U+01B50 BALINESE DIGIT ZERO
  26.  ᮰  U+01BB0 SUNDANESE DIGIT ZERO
  27.  ᱀  U+01C40 LEPCHA DIGIT ZERO
  28.  ᱐  U+01C50 OL CHIKI DIGIT ZERO
  29.  ꘠  U+0A620 VAI DIGIT ZERO
  30.  ꣐  U+0A8D0 SAURASHTRA DIGIT ZERO
  31.  ꤀  U+0A900 KAYAH LI DIGIT ZERO
  32.  ꧐  U+0A9D0 JAVANESE DIGIT ZERO
  33.  ꩐  U+0AA50 CHAM DIGIT ZERO
  34.  ꯰  U+0ABF0 MEETEI MAYEK DIGIT ZERO
  35.  0 U+0FF10 FULLWIDTH DIGIT ZERO
  36.  𐒠  U+104A0 OSMANYA DIGIT ZERO
  37.  𑁦  U+11066 BRAHMI DIGIT ZERO
  38.  𝟎  U+1D7CE MATHEMATICAL BOLD DIGIT ZERO
  39.  𝟘  U+1D7D8 MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
  40.  𝟢  U+1D7E2 MATHEMATICAL SANS-SERIF DIGIT ZERO
  41.  𝟬  U+1D7EC MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
  42.  𝟶  U+1D7F6 MATHEMATICAL MONOSPACE DIGIT ZERO

La liste ci-dessus m’a été obligeamment fourni par la ligne de commande

unichars -a '\d'  | grep ZERO

Unichars étant un merveilleux script du module Perl Unicode::Tussle

28 octobre 2013 / gallegre

OpenStreetMap vs Wikipedia – 2/3 – Différences et divergences

aurora_consurgens_joutes_commons

Précédemment…

Ce billet fait donc suite à l’épisode 1, détailant les convergences entre Wikipédia et OpenStreetMap. Foin d’amours courtoises, je vais essayer de mettre en évidence ici les différences et les divergences entre les deux projets. Provocation et mauvaise foi ayant toujours été à la base d’un bon succès médiatique, les commentaires sont ouverts…

Lire la suite…

20 octobre 2013 / gallegre

OpenStreetMap vs Wikipedia – 1/3 – les convergences

Avertissement…

Le triptyque d’articles à venir est le recyclage éhonté d’une présentation que j’ai faite en juin dernier lors d‘une wikipermanence de la Cabale à la Noix, à Grenoble donc, pour les Initiés. Mon but essentiel était de présenter chacun des deux projets à l’autre communauté, étant moi-même bi-classé.

À l’origine, cette présentation visait surtout à amorcer le dialogue entre les contributeurs des deux projets. Ici, ce seront les commentaires qui joueront ce rôle, du moins je l’espère. J’ai essayé d’être à peu près objectif dans les comparaisons entre OSM et Wikipédia ; j’ai cependant une plus grande expérience sur OpenStreetMap, et les Wiki[PM]édiens experts auront tout loisir de corriger mes bêtises dans les commentaires.

Pour la structuration de ces trois articles, comme pour ma présentation originale, sans vergogne, j’ai adopté la valeur sûre du programme de seconde en français, connu sous le nom de plan dialectique.

Lire la suite…