assemblee-virtuelle / assemblee-virtuelle/semapps
GraphQLDP
- Dominant language
- TypeScript
- Stars
- 103
- Forks
- 14
- Avg merge
- 1m
- Merged PRs (30d)
- 2
Description
Idée: transformer un API GraphQL en serveur LDP, avec ses containers et ses ressources.
Pourrait servir pour ouvrir en sémantique les données de [toutes les instances Mobilizon](https://docs.joinmobilizon.org/contribute/graphql_api/), [Open Collective](https://graphql-docs-v2.opencollective.com/), [Github](https://docs.github.com/en/graphql), et beaucoup d'autres services.
Par exemple si on POST sur https://mobilizon.fr/api cette requête (potentiellement via l'interface https://mobilizon.colibris-outilslibres.org/graphiql):
```
query {
events {
elements {
id,
url,
title,
description,
beginsOn,
endsOn,
status,
picture {
url
},
physicalAddress {
id,
description,
locality
}
}
total
}
}
```
On obtient tous les événements Mobilizon de l'instance de Framasoft:
```
{
"data": {
"events": {
"elements": [
{
"beginsOn": "2021-04-15T10:30:00Z",
"description": "
Rendez-vous au marché de Malakoff
de 12h30 à 13h30 : pour la collecte des invendus.
Rendez-vous au local de Tinhï Kmou (43 bd Gustave Roch)
de 13h30 à 14h30 : pour le tri des denrées, avant redistribution.
de 14h30 à 16h30 : pour un moment de convivialité et pour prêter main forte en fonction des besoins.
de 16h30 à 17h30 : pour la redistribution (qui commence à 16h45, mais il vaut mieux s'y préparer pour 16h30)
Si vous ne pouvez pas venir pour toute l'après-midi, mais uniquement une partie, pas de souci, précisez-le juste en commentaire ! ;)
Il y a toujours une petite équipe sur les lieux, même si elle ne confirme pas sur Mobilizon. Donc ne vous fiez pas au "Personne n'y va" ! ^^'
","endsOn": "2021-04-15T15:30:00Z",
"id": "119518",
"physicalAddress": {
"description": "Place Rosa Parks",
"id": "2175",
"locality": "Nantes"
},
"picture": {
"url": "https://mobilizon.fr/media/6501928564953590f727739b4754684b43b4293d4c65c43e17a8ebe9b0cc2049.jpg?name=IMG_20210119_142939.jpg"
},
"status": "CONFIRMED",
"title": "JEUDI : Collecte marché de MALAKOFF, tri & distribution",
"url": "https://mobilizon.fr/events/3a7f78db-17c1-4b98-b4c4-88f7be6e1f95"
},
{
"beginsOn": "2021-04-15T18:30:00Z",
"description": "
La soirée de la SCL du jeudi 15 avril aura pour thème
","endsOn": "2021-04-15T21:30:00Z",
"id": "122113",
"physicalAddress": null,
"picture": {
"url": "https://mobilizon.fr/media/b5fef32cb2e9b6dae03901700637d9fef3b78cb4d6d26bfc3bb55bd549beb396.png?name=Banner.png"
},
"status": "CONFIRMED",
"title": "Soirée de Conversations autour du Libre (SCL) du jeudi 15 avril 2021",
"url": "https://mobilizon.parinux.org/events/e51b7419-c05d-46bd-8c74-2bca0930af17"
},
...
],
"total": 121
}
}
}
```
Pour de la lecture, il suffirait de proposer un container LDP `/events` qui renverrait ces données sous forme de `pair:Event` (par exemple). En terme de configuration, il suffirait d'indiquer le mapping entre données non-sémantiques et sémantiques. Grâce à GraphQL, on ne demanderait que les données qu'on veut mapper.
On pourrait ensuite aggréger les données sur une instance SemApps (https://github.com/assemblee-virtuelle/semapps/issues/674)
Pour de l'écriture, ça demanderait de faire appel à des mutations GraphQL et de gérer l'authentification correctement. Plus compliqué mais pas impossible.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the Mobilizon GraphQL API example and the linked SemApps issue #674. Define the read-only scope around an LDP /events container, configurable mappings, and the expected semantic output before considering GraphQL mutations or authentication.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- graphql, typescript
- Domain
- api, backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100