DATAtourisme

Keys dupliquées


#1

Hello,

Je viens de me casser la tête un petit moment, pour constater qu’il pouvait y avoir des clés dupliquées.

Par exemple hasContact retourne soit un hash (valeur unique) soit un tableau avec deux clés identiques schemaAddress. Typiquement, ce genre de données génère des exceptions qui demandent un traitement spécial.
Pourquoi ne pas tout simplement proposer un schemaAddress1 et un schemaAddress2 ?

De plus on ne connait pas la hiérarchie de l’information.
En regardant de plus près une donnée exemple, à la lecture, je constate que c’est plutôt le premier schemaAddress qui correspond à mes besoins. Sauf que dans cet exemple, le site web, le telephone, l’email qui m’intéressent aussi, se trouve dans le deuxième schemaAddress.

Mais est ce que c’est la même logique pour tous les POIs, où est ce que le site web, l’email… peuvent se trouver invariablement dans l’un ou l’autre?

Peut être qu’il serait judicieux de proposer des clés plus fines genre :
shemaAddressBase
shemaAddressAdmin

Je pense que cela fiabiliserait les données, tout en rendant le parsing des json beaucoup plus facile. (C’est le dev qui parle;) ). Là il faut gérer des exceptions sans être sur que le résultat soit le plus générique possible.

Même chose aussi pour le téléphone. Pourquoi ne pas éclater le tableau avec deux valeurs : telephone & mobile par exemple.

Bien entendu, ce ne sont que des suggestions pour rendre ce superbe outil encore plus performant :wink:

Je continue mon exploration


#2

Bonjour,

Je note dans votre message des éléments qui relèvent d’une nécessité d’amélioration de la qualité d’alignement des données.

Sauf que dans cet exemple, le site web, le telephone, l’email qui m’intéressent aussi, se trouve dans le deuxième schemaAddress.

Mais est ce que c’est la même logique pour tous les POIs, où est ce que le site web, l’email… peuvent se trouver invariablement dans l’un ou l’autre?

Il y a normalement des propriétés dédiées pour ces informations (schema:email, schema:telephone), elles ne devraient donc pas se retrouver dans schema:address.

Pourriez-vous me citer un POI concerné par l’un de ces problèmes ?

Cordialement.


#3

J’ai fait une petite erreur, c’est infos ne se trouvent effectivement pas dans schema:adress, mais dans le tableau hasContact.

      "hasContact": [{
      "@id": "data:0d732870-7144-3379-9c20-37e1e2526c09",
      "schema:address": {
        "@id": "data:59531715-3ef9-3e6e-ab47-96190f795e01",
        "schema:addressLocality": "Argences en Aubrac",
        "schema:postalCode": "12420",
        "schema:streetAddress": "Peyregrosse, Ste-Geneviève-sur-Argence",
        "@type": ["schema:PostalAddress","PostalAddress"],
        "hasAddressCity": {
          "@id": "kb:12223"
        }
      },
      "schema:legalName": "Centre de vacances la Chêneraie",
      "@type": ["schema:Organization","foaf:Agent","Agent"]
    },{
      "@id": "data:58ba4557-17bf-3be6-8463-59cfc0a01250",
      "schema:address": {
        "@id": "data:b2b0371d-79de-35af-9ae1-8f4411411515",
        "schema:addressLocality": "Argences en Aubrac",
        "schema:postalCode": "12420",
        "schema:streetAddress": ["Place des Tilleuls","Ste Geneviève sur Argence"],
        "@type": ["schema:PostalAddress","PostalAddress"],
        "hasAddressCity": {
          "@id": "kb:12223"
        }
      },
      "schema:email": "contact@argencesenaubrac.fr",
      "schema:legalName": "Mairie d' Argences en Aubrac",
      "schema:telephone": "+33 5 65 66 41 46",
      "@type": ["schema:Organization","foaf:Agent","Agent"],
      "foaf:homepage": "https://www.gitedegroupe.fr/gite-groupe-Vy-683b.html"
    }]

Exemple tiré de : “@id”: “https://data.datatourisme.gouv.fr/31/8a8c5905-6c16-39f4-9cd9-8cb15a523946

Dans cet exemple, on a deux legalName. A priori, le nom commercial est au niveau de l’index 0 de ce tableau, mais les autres infos sont niveau de l’index 1.

Si par exemple je parse la valeur 0 du tableau je vais récupérer :
Centre de vacances la Chêneraie - “Place des Tilleuls”,“Ste Geneviève sur Argence” - 12420 mais je vais perdre les valeurs email, telephone…etc

Si par exemple je parse la valeur 1 du tableau je vais récupérer :
Mairie d’ Argences en Aubrac - “Peyregrosse, Ste-Geneviève-sur-Argence” - 12420 avec les valeurs email, telephone…etc mais par contre, ce n’est pas vraiment ce que j’attends…

La difficulté c’est que rien ne nous dit, à priori, quelles sont les valeurs qu’il faut sélectionner.

Sais pas si mon explication est claire :wink:


#4

Pour illustrer mon propos, voici un autre extrait :

Dans celui-ci, les infos sont inversé par rapport à mon premier exemple, à savoir que les infos commerciales sont au niveau 1 du tableau et les les infos administratives au niveau 0.

hasContact": [{
      "@id": "data:5029275e-b535-3c3f-af2e-438dcffb2aa8",
      "schema:address": {
        "@id": "data:ea0f8420-5ccb-3006-83bf-709351228799",
        "schema:addressLocality": "Laguiole",
        "schema:postalCode": "12210",
        "schema:streetAddress": "Place de la Mairie",
        "@type": ["schema:PostalAddress","PostalAddress"],
        "hasAddressCity": {
          "@id": "kb:12119"
        }
      },
      "schema:email": "tourisme@aubrac-laguiole.com",
      "schema:legalName": "Office de tourisme Aubrac - Laguiole",
      "schema:telephone": "+33 5 65 44 35 94",
      "@type": ["schema:Organization","foaf:Agent","Agent"],
      "foaf:homepage": "http://www.aubrac-laguiole.com/"
    },{
      "@id": "data:e61c21ac-5bf0-3e2c-a8dd-eabc48f40f75",
      "schema:address": {
        "@id": "data:dfc17b93-1f47-380c-b8a7-0ef11923c5c1",
        "schema:addressLocality": "Curières",
        "schema:postalCode": "12210",
        "schema:streetAddress": "Château du Puech",
        "@type": ["schema:PostalAddress","PostalAddress"],
        "hasAddressCity": {
          "@id": "kb:12088",
          "@type": ["owl:NamedIndividual","City"],
          "rdfs:label": {
            "@value": "Curières",
            "@language": "fr"
          },
          "insee": "12088",
          "isPartOfDepartment": {
            "@id": "kb:France7612"
          }
        }},
      "schema:email": "chateaudupuech@gmail.com",
      "schema:familyName": "DE LACHOMETTE - CECILLE",
      "schema:givenName": "Nadège",
      "schema:legalName": "Nadège DE LACHOMETTE - CECILLE",
      "@type": ["schema:Organization","schema:Person","foaf:Agent","foaf:Person","Agent","Person"],
      "foaf:homepage": "http://www.chateaudupuech.fr/",
      "foaf:title": "04.01.02"
    }],

#5

Ben,

Vous ne pouvez effectivement pas vous fier aux index des tableaux, car des informations peuvent être, ou pas, présentes dans le tableau. Ce qui par conséquent fait varier les index. Il vaudrait mieux transformer votre json en objet afin de travailler avec les clés plutôt que les index (fonctions du type json_decode en php).


#6

Je travaille déjà avec le json, mais lorsque hasContact renvoie un tableau avec deux keys identiques, je n’ai d’autre choix que de travailler sur les index de ce tableau.