DATAtourisme

Requete pour creer un flux JSON

Bonjour,

Tout d’abord merci à tous pour le colloque de la semaine dernière au Ministère des Finances. Il est toujours bon de découvrir les personnes derrière un projet important pour nous et cela apporte beaucoup d’informations.

A cette occasion, quelqu’un de Conjecto m’a fait une suggestion très pertinente de générer un flux JSON plus adapté à nos besoins que celui généré par default, c’est à dire sans l’object context, seulement le graph et seulement l’array d’objects.

Je n’ai pas réussi depuis à créer une telle requête, donc j’apprécierai beaucoup une aide.

Le format du fichier du flux JSON de default est comme cela:

{
@context”: {…},
@graph”: [{obj},{obj},{obj}]
}

J’aimerais avoir dans le flux uniquement:

[{obj},{obj},{obj}]

ou encore mieux:
{obj},{obj},{obj}

mais ce ne doit pas être possible je crois.

Merci d’avance.

Fred

Bonjour
Le format “{obj},{obj},{obj}” n’est sémantiquement pas correct donc ça sera du [{obj},{obj},{obj}]

Par contre, sauf nouveauté ou quelque chose qui sortirait plus tard… le JSON n’est pas disponible dans les formats d’exports seuls JSON-LD donc il faut dans tous les cas passer par JSON-LD puis générer du JSON. En JSON-LD tu as le structuré ou le compacté de proposés…ils ont tous un contexte (c’est le principe de JSON-LD)…par contre avec les bonnes lib en te donnant en entrée ce JSON-LD tu peux produire du JSON. Décrit un peu plus ton cas, process actuels afin de te répondre au mieux. Quelles sont tes problématiques actuelles ?

Par exemple chez Go-France: on a un flux pour chaque région. Un script qui importe ce flux JSON LD structuré et qui produit un JSON à plat (en gros tous les noeuds sont au même niveau, mais ça c’est propre à nos besoins car cette bibliothèque ne remplit pas les noeuds enfants, il y a juste l’ID) . On fait tout un tas de process métier et on insère en base. Depuis 1 an et demi (et les débuts de DATATourisme en 2018) ce scripts d’imports et les choix techniques internes ont pas mal évolué pour s’améliorer et s’optimiser

Merci Simon.

Nos flux doivent etre traites en serverless, donc en streaming. Je cherche a lire tous les POIs object par object sans lecture et traitement global d’un fichier de toute la France.

J’ai deja écrit un streaming parser JSON-LD en JS qui ne convient a mon environnement. Je le convertirai en un autre language si je ne trouve pas une solution par la generation de JSON-LD.

Nous avons deja un PoC workflow CSV SQL avec plusieurs steps qui fonctionne très bien mais ce n’est pas adapte au serverless final.

Je ne suis pas particulierement attache au JSON-LD, RDF ou autre pourrait convenir mais je commence a avoir de contraintes de temps pour trouver une solution streaming en Python ou Java par exemple, supportes en serverless avec les contraintes de memoire et limites en temps d’execution de cet environnement.

Hum… pas simple en effet en NodeJS il y a une lib qui parse le Json-ld en streaming.
Après en soit, même si ce n’est pas le cas nos scripts peuvent tourner en serverless (car ils chargent le fichier distant de DATATourisme puis le traitent). Après la contrainte que tu as, c’est que si le fichier est trop gros le script plante.
Par exemple pour notre flux nouvelle-aquitaine initial on a splitté en deux cette région car dans différents langages (php, nodejs, OK en Golang) nous provoquions des fuites de mémoires (fichiers trop gros entre autres…).

Il y a beaucoup de contraintes pour que ça tourne en serverless (mémoire et temps d’execution comme tu as mentionné)

Bonjour,

Lors du colloque de la semaine dernière l’utilisation de l’API GraphQL a été présentée.
Elle permet de récupérer les POI en Json à travers de la pagination mais enveloppe les résultats :
https://datatourisme.frama.io/api/#/api/fields?id=propriétés-multilingues

{ "data": { "poi": { "results": [{obj},{obj},{obj}]}}}

Coté Json-LD il est possible d’ajouter un context à un Json mais à ma connaissance pas de retirer un context d’un Json-LD. (à part le format Expended https://json-ld.org/playground/)

Pour prendre cela en compte lors d’un traitement en streaming j’imagine deux approches :

  • Ne rien faire tant qu’on a pas passé le nœud @graph
  • Utiliser un autre format plus adapté au streaming (par exemple nt, Json-LD Expended ou csv)

Cordialement.