4 - Documentation technique

Sous le capot.

UNIVERS TECHNIQUE

INSTALLATION de Communecter

INTRODUCTION au code

MODULES

  • PEOPLE
  • ORGANIZATIONS
  • EVENTS
  • PROJECTS
  • POINTS OF INTEREST
  • DDA : Discuss Decide and Act (doc)
  • SOCIAL BOOKMARKING
  • PLACES NEEDS SERVICES COMPETENCE (soon)
  • GLOOTON : GENERIC IMPORT TOOL
  • BABELFISH : GENERIC Semantic translation and conversion

INSTANCES

Basé sur le code de Communecter

OPEN SOURCE TOOLS WE USE (doc)

CONNECTING THINGS TOGETHER

OPEN SOURCE PROJECTS WE USE AND LOVE

Introduction au code

N’ayez pas peur ! Le code est écrit de manière accessible afin que vous puissiez y contribuer facilement. Si vous êtes à l’aise avec les méthodes plus “standard” dans l’industrie, il est possible de coder de votre côté et de communiquer via l’API.

Ressources pour débuter

Architecture

Le motif utilisé est le classique Modèle-vue-contrôleur. Une grosse partie du code se trouve dans le dépôt CO2 de notre Github, tandis que citizenToolKit gère plutôt le backend.

Construction d’une URL

Les URL sont gérées par co.js et se présentent sous la forme suivante : /ph/[module]/#[application]

  • module correspond à une fonction de base. Par exemple le module CO2 gère, entre autre, l’affichage, network permet d’afficher des cartes et API gère… l’API.). Un gros travail de moduralisation est en cours.
  • application fait référence aux applications utilisateurs. Elles sont déclarées dans params.json. Le paramètre hash défini quel contrôleur sera utilisé. Les contrôleurs se trouvent dans co2/controllers, et définissent quelle vue va être chargée (liste des vues).

Par exemple la page communecter.org/#search correspond à la vue co2/views/app/search.php.

Installer Communecter

Installer Communecter

Ubuntu 16.04

Prérequis

Pour utiliser Communecter vous devez avoir

  • Apache 2 & PHP 5.6 (Attention, ne fonctionne pas sur PHP 7)

    • sudo apt-get install apache2 php5.6

    • Pour passer de la version 7 à 5.6 vous pouvez suivre la solution suivante : https://askubuntu.com/questions/761713/how-can-i-downgrade-from-php-7-to-php-5-6-on-ubuntu-16-04

    • Certains modules doivent être installé

      • rewrite sudo a2enmod rewrite
      • curl sudo apt-get install php5.6-curl
      • mcrypt sudo apt-get install php5.6-mcrypt
      • gd sudo apt-get install php5.6-gd
      • mongo sudo apt-get install php5.6-mongo
      • dom sudo apt-get install php5.6-dom
    • Pour vérifier votre version de PHP php -v

  • MongoDB 3.4 (Ne fonctionne pas avec la 3.6) :

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org

Install

Clone from GitHub :

mkdir /home/[nameUser]/dev/communecter 
mkdir /home/[nameUser]/dev/communecter/modules 
cd /var/www/html/
sudo ln -s /home/[nameUser]/dev/communecter communecter
cd /home/[nameUser]/dev/communecter
git clone https://github.com/pixelhumain/pixelhumain.git
cd modules/
git clone https://github.com/pixelhumain/citizenToolKit.git
git clone https://github.com/pixelhumain/co2.git
ln -s co2 network
git clone https://github.com/pixelhumain/api
git clone https://github.com/pixelhumain/graph.git
git clone https://github.com/pixelhumain/classifieds.git
git clone https://github.com/pixelhumain/ressources.git
git clone https://github.com/pixelhumain/places.git
git clone https://github.com/pixelhumain/chat.git
git clone https://github.com/pixelhumain/learn.git
git clone https://github.com/pixelhumain/survey.git
git clone https://github.com/pixelhumain/interop.git
git clone https://github.com/pixelhumain/cotools.git
git clone https://github.com/pixelhumain/eco.git
cd ../

Installer les dépendances avec Composer :

sudo apt install composer
cd pixelhumain/ph/
composer update
composer install

Rename the dbconfig file :

cd protected/
cp config/dbconfig.exemple.php config/dbconfig.php

Création du dossier runtime et assets

mkdir /runtime
sudo chmod -R 775 runtime/
cd ../
mkdir /assets
sudo chmod -R 775 assets/
cd ../
sudo chown -R votreUser:www-data pixelhumain
sudo chown -R votreUser:www-data modules

Configuration

And configure Apache vhost : edit /etc/apache2/sites-available/communecter.conf :

<VirtualHost *:80>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	  
	  Alias "/ph" "/var/www/html/communecter/pixelhumain/ph"
	  <Directory "/var/www/html/communecter/pixelhumain/ph">
		Options FollowSymLinks Indexes
		AllowOverride none
		Order deny,allow
		#Allow from 127.0.0.1
		#deny from all
		<IfModule mod_rewrite.c>
		Options +FollowSymLinks
		IndexIgnore */*
		RewriteEngine on
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		RewriteCond $1 !^(index\.php|assets|robots\.txt)
		RewriteRule ^(.*)$ /ph/index.php/$1 [L]
		</IfModule>
	  </Directory>

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Activate the new vhost :

sudo a2ensite communecter 
sudo a2enmod rewrite 
sudo service apache2 reload

Configurer MongoDB

#Making the Data folder for MongoDB
mkdir data/
mkdir data/db

#Starting mongod (communecter Database Engine)
mongod --dbpath "/var/www/html/communecter/data/db"

#Making user adding script of pixelhumain user
echo 'db.createUser({     user: "pixelhumain",     pwd: "pixelhumain",     roles: [{role:"readWrite", db:"pixelhumain"}]})' > adduserpixelhumaindb.js                                                   
mongo pixelhumain adduserpixelhumaindb.js

#Deleting script after use
rm adduserpixelhumaindb.js

Import les données :

cd modules/co2/data
unzip cities.json.zip
mongoimport --db pixelhumain --collection cities --file cities.json

unzip translate.json.zip
mongoimport --db pixelhumain --collection translate --file translate.json

unzip zones.json.zip
mongoimport --db pixelhumain --collection zones --file zones.json

mongoimport --db pixelhumain --collection lists lists.json --jsonArray ;

mongo
  use pixelhumain
  db.createCollection("applications")
  db.applications.insert({     "_id" : ObjectId("59f1920bc30f30536124355d"),     "name" : "DEV Config",     "key" : "devParams",     "mangoPay" : {         "ClientId" : "communecter",         "ClientPassword" : "xxxx",         "TemporaryFolder" : "../../tmp"     } } )
  db.applications.insert({     "_id" : ObjectId("59f1920bc30f30536124355e"),     "name" : "PROD Config",     "key" : "prodParams",     "mangoPay" : {         "ClientId" : "communecter",         "ClientPassword" : "xxxx",         "TemporaryFolder" : "../../tmp"     } } )
  exit

cd ../

Ajouter MongoDB au démarrage et faire le script d’utilisation : sudo nano /etc/init.d/communecterdb

Ajouter ceci :

#!/bin/sh
#
### BEGIN INIT INFO
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Provides:          unattended-upgrade-shutdown-check
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: Check if unattended upgrades are being applied
# Description:       Check if unattended upgrades are being applied
#                    and wait for them to finish
### END INIT INFO

mongod --dbpath /var/www/html/communecter/data/db

Sauvegardez :

sudo chmod +x /etc/init.d/communecterdb
update-rc.d communecterdb defaults
update-rc.d communecterdb enable

Alternative : créer le script communecterdb.sh, le rendre exécutable et l’ajouter dans /etc/rc.local

Vérifier que tous les composants sont installés

Accéder a l’url suivant : http://127.0.0.1/ph/test
Et réglez tout les points rouges.

C’est bon vous pouvez utiliser COMMUNECTER

Accédez à cette adresse : http://127.0.0.1/ph/

Optionnel

Interface Mongo

Si vous souhaitez avoir une interface pour géré MongoDB vous pouvez télécharger Robo3T : https://robomongo.org/download

Email service to cron

Add

crontab -e : */2 * * * * curl https://127.0.0.1/ph/co2/test/docron

Use

Communecter is now available : http://127.0.0.1/ph/
To try the email service, go to http://127.0.0.1/ph/co2/test/docron

To use in production mode, edit index.php

Update

Create /var/www/html/communecter/update.sh containing :

red=`tput setaf 1`
green=`tput setaf 2`
blue=`tput setaf 0`
bgWhite=`tput setab 7`
reset=`tput sgr0`

cp pixelhumain/ph/protected/config/dbconfig.php .
cp pixelhumain/ph/protected/config/paramsconfig.php .

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CO2  --------------------"
echo "---------------------------------------------${reset}"
echo ""
cd modules/co2
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CITIZEN TOOLKIT-----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../citizenToolKit
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CLASSIFIEDS -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../classifieds
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull


echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ RESSOURCES -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../ressources
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull


echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ PLACES -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../places
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ API -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../api
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull



echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CHAT -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../chat
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ PIXELHUMAIN --------------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../../pixelhumain
rm -f ph/protected/runtime/application.log
rm -Rf ph/assets/*

echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git reset --hard HEAD
git pull

cp ../dbconfig.php ph/protected/config
cp ../paramsconfig.php ph/protected/config

#echo "${red}---------------------------------------------"
#echo "------------ GLOBAL STATS --------------------"
#echo "---------------------------------------------${reset}"
#git shortlog -s -n

Make it executable and launch it.

Installer Communecter

Docker

Retour au TODO de Fluidlog

Proposition de Marc_Toulouse sur le chat :
https://chat.lescommuns.org/channel/co_dev_open
L’idée en effet est de regrouper les différents façons d’installer Communecter ici : https://wiki.communecter.org/en/installing-communect.html (c’est un clone du wiki de Github)
Voir plus précisément : https://wiki.communecter.org/en/installing-communect-with-docker.html (et pas https://wiki.communecter.org/en/installing-communect-on-ubuntu-16.04.html à priori car ça ne concerne pas docker)

Tibor me parle aussi du nouveau PAD : http://pad.co.tools (sur CryptoPad) : ça c’est pour faire la doc. C’est vraiment ici qu’elle doit être faite : https://wiki.communecter.org/en/installing-communect-with-docker.html : en cliquant sur le crayon, on accès au wiki de Github en mode édition (faut avoir un compte github)

Installation de Communecter via docker

choose community edition CE https://docs.docker.com/engine/installation
example install docker ubuntu https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu

Erreur avec AptGet… OK
docker-ce n’était pas dispo de base, il a fallu ajouter des serveurs
En fait, j’ai du suivre le post:
https://gist.github.com/Stoakes/a5adb36e9211964dbf00b47d36edd181

Post-installation steps for Linux https://docs.docker.com/engine/installation/linux/linux-postinstall

Installer docker-compose

https://docs.docker.com/compose/install

Installer Communecter

git clone https://github.com/pixelhumain/docker ~/pixelhumain-docker
cd ~/pixelhumain-docker
mkdir -p code/data/db
mkdir -p code/log
sudo docker-compose -f docker-compose-no-build.yml -f docker-compose.install-no-build.yml run ph install 

Mise à jour des droits

Modifier les droits pour pouvoir modifier les fichiers :

Pour taper ces commandes, se mettre dans le rep :
cd ~/projets/pixelhumain-docker

#modifier le group/user pour pouvoir ouvrir/modifier les fichiers
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/pixelhumain/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/modules/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/log/

Voir aussi “Getting start” : https://docs.docker.com/compose/gettingstarted/#step-3-define-services-in-a-compose-file

Problème d’accès

Suite à cela, je n’avais pas accès à CO.

Nous avons vérifié si un container tournait (voir paragraphe plus bas) -> non

Nous avons supprimé le répertoire code pour tout recommencer.

mkdir -p code/data/db
mkdir -p code/log
docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph install

Explication :
la il va rebuilder le container front et utiliser le container install pour faire l’install sur le front
c’est pour ça que l’on a 2 fichier :

  • docker-compose.yml
  • docker-compose.install.yml

docker-compose.install.yml ne sert que pour l’install et certaine commande

Suite à ces commandes, il clone tout ce qu’il faut en local, ça prend un certain temps en fonction de votre réseau…

Aller sur http://localhost:5080

La première fois, j’ai eu des messages d’erreur d’accès…

Thomas m’a demandé si j’avais le répertoire :
/pixelhumain-docker/code/pixelhumain/ph/vendor/
mais je ne l’avais pas…

Nous avons de nouveau supprimé le répertoire code, et modifié le script

/pixelhumain-docker/docker-install/Dockerfile

pour y ajouter curl et php

Voir la présence et lancer un container

Pour savoir si docker tourne, faire "docker ps"
S’il n’y a rien (à part le titre des colonnes du tableau), c’est signe qu’aucun container ne tourne.

Exemple : ici, il n’y a pas de container qui tourne :

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Là, il y en a :

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                                                           NAMES
92ed85af6a28        pixelhumaindocker_front   "/usr/bin/supervisord"   4 weeks ago         Up About a minute   9000/tcp, 0.0.0.0:5080->80/tcp, 0.0.0.0:5443->443/tcp, 0.0.0.0:5901->9001/tcp   pixelhumaindocker_front_1
8f16ade3a72b        mongo                     "docker-entrypoint..."   4 weeks ago         Up About a minute   27017/tcp                                                                       pixelhumaindocker_mongo_1

Et pour lancer un container :

docker-compose -f docker-compose.yml up

Inscription en local

Une fois sur l’interface d’accueil de CO, il faut remplir le formulaire d’inscription, sauf que le mail d’activation n’est pas envoyé.

Pour passer cette étape, on “triche” avec la commande :

docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph cotools --emailvalid=email@example.com

(en modifiant bien sur : email@example.com par l’email qui a servi à l’inscription)
On rafraîchit la page, on se loge, et ça fonctionne, on arrive dans CO !

Gérer le démarrage auto

https://docs.docker.com/engine/installation/linux/linux-postinstall/#configure-docker-to-start-on-boot

sudo systemctl enable docker
Synchronizing state of docker.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable docker

Malgré cela, CO ne démarre pas au lancement de ma machine.

Accès à Communecter

Je n’ai pas encore réussi (pas essayé non plus…) à le lancer au démarrage, donc à chaque fois que je souhaite lancer CO :

  • Je vais dans mon répertoire ~/projets/pixelhumain-docker/
  • Je lance docker-compose -f docker-compose.yml up
  • Je vais sur http://localhost:5080, et ça tourne !

Tout est noté à la fin du script ci-dessus… (je dis ça, car j’ai cherché un peu car je n’avais pas lu…)

Ajout de Fluidgraph dans CO

Administration de la base NoSQL (mongoDB)

Pour avoir accès à mongo en dehors du container il faut ouvrir le port
Voir fichier :
https://github.com/pixelhumain/docker/blob/master/docker-compose.yml

J’ai du ajouter la ligne concernant l’ouverture de port comme l’exemple qui suit :

services:
  mongo:
    image: mongo
    volumes:
      - ./code/data/db:/data/db
    ports:
      - "5017:27017"

Cela m’a permis, via l’outil Robomongo d’ajouter une collection :

{
    "_id" : ObjectId("59f1920bc30f30536124355d"),
    "name" : "DEV Config",
    "key" : "devParams",
    "mangoPay" : {
        "ClientId" : "communecter",
        "ClientPassword" : "XXXXXXXXXXX",
        "TemporaryFolder" : "../../tmp"
    }
}

Je ne sais pas encore à quoi ça correspond, mais on m’a dit de le faire, sinon, j’avais l’erreur :

ERREUR 403
Missing Configs db.applications.key == prodParamsexists 

Ce qui m’a permis de faire fonctionner mon instance locale.

API

Accès à l’interface graphique de l’API : communecter.org/api

Google logo

Get : Récupérer des informations

Depuis l’API vous avez la possibilité de récupérer différentes informations en provenance de Communecter :

  • [citoyens] Citoyen
  • [organizations] Organisation
  • [projects] Projet
  • [events] Événement
  • [needs] Besoin
  • [news] News

Récupérer toutes les entités

Structure

/api/[project || person || organization || event || need || news]/get/

Exemple

https://www.communecter.org/api/organization/get

Pour voir la description du résultat aller dans la rubrique “Les attributs”.

Paramétrer la recherche

Vous avez la possibilité d’ajouter des paramètres pour peaufiner votre recherche :

  • [id] Identifiant
  • [tags] Tags
  • [insee] Code Insee
  • [format] Format

Récupérer une entité via son identifiant

/ph/communecter/data/get/type/(projects || citoyens || organizations || events || news)/id/[id_entity]

Exemple : https://www.communecter.org/api/organization/get/id/57186ed894ef47210d7b242d

Rechercher par tags

Vous avez la possibilité de paramétrer la recherche des entités en fonctions des tags. Vous pouvez ajouter plusieurs tags qui devront être séparé par une virgule. Par défauts, si vous avez mis plusieurs tags, il suffit pour l’entité d’avoir un de ces tags pour être affiché. Si vous souhaitez que l’entité possède tout les tags alors il faut mettre le paramètre suivant : /multiTags/true

Exemples :

https://www.communecter.org/api/organization/get?tags=nuitdebout
https://www.communecter.org/api/organization/get?tags=education,social
https://www.communecter.org/api/organization/get?tags=education,social/multiTags/true

Rechercher par code Insee

Si vous connaissez le code Insee de votre commune, vous pouvez faire une recherche via ce code.

Exemple :

https://www.communecter.org/api/organization/get?insee=33402

Formats

L’API prend en compte différents formats pour le résultat. Par défaut, c’est le format que propose Communecter. Nous prenons aussi en comptes les formats suivant :

  • SCHEMA /ph/communecter/data/get/type/organizations/format/schema
  • PLP /ph/communecter/data/get/type/citoyens/format/plp
  • RSS /ph/api/news/get/format/rss
  • JSONFEED /ph/api/news/get/format/jsonfeed
  • KML /ph/api/event/get/format/kml
  • GEOJSON /ph/api/person/get/format/geojson
  • CSV /ph/api/person/get/format/csv

Attention certains formats ne retourne pas forcement toutes les entités, voici la liste pour chaque format.

COMMUNECTER

  • [citoyens] Citoyen
  • [organizations] Organisation
  • [projects] Projet
  • [events] Événement
  • [needs] Besoin
  • [news] News

SCHEMA

  • [citoyens] Citoyen
  • [organizations] Organisation
  • [projects] Projet
  • [events] Événement
  • [needs] Besoin
  • City
  • [news] News

PLP

  • [citoyens] Citoyen

KML

  • [citoyens] Citoyen
  • [organizations] Organisation
  • [projects] Projet
  • [events] Événement
  • [needs] Besoin
  • City
  • [news] News

GEOJSON

  • [citoyens] Citoyen
  • [organizations] Organisation
  • [projects] Projet
  • [events] Événement
  • [needs] Besoin
  • City
  • [news] News

CSV

  • [organizations] Organisation

RSS

  • [news] news

JSONFEED

  • [news] news

Les attributs

Ici, vous aurez la description de tout les attribues des différentes entités qui sont retournés via l’API.

Format Communecter

  • limit Nombre d’entités retournée
  • next url retournant la suite des entités
  • previous url retournant la liste précédente des entités

entities toutes les entités en leurs identifiants en clé

  • name Nom de l’entité
  • image Url de l’image de profil de l’entité
  • urlCommunecter Url de la fiche de l’entité sur Communecter
  • urlApi Url qui retourne les informations d’une entité via l’API
  • address
    • streetAddress Numéro et nom de la rue
    • postalCode Code postal
    • addressLocality Nom de la commune
    • addressCountry Nom du Pays
    • codeInsee Code Insee de la commune
  • geo
    • latitude
    • longitude
  • geoPosition Autre format pour la position géographique de l’entité
  • shortDescription Courte description de l’entité
  • description Description de l’entité.
  • email L’email de l’entité.
  • phone L’ensemble des numéros de téléphones de l’entité ( fixe, mobile et fax)
  • socialNetwork L’ensemble des liens vers les autres réseaux sociaux de l’entité
  • tags Tous les tags associés à l’entité
  • links Les différents liens que l’entité a avec les autres :
    • memberOf Liste des organisations dont l’entité est membre
    • projects Liste des projets dont l’entité contribue
    • events Liste des événements dont l’entité est invitée ou participe
    • followers Liste des citoyens dont l’entité suit.
    • members Liste des citoyens membres de l’entité.
    • needs Liste des besoins de l’entité.

Convert : Récupérer des données en onthologie PH

Depuis l’API, vous avez la possibilité de convertir les données sous différents format que vous possédez directement en onthologie PH.

  • [geojson] GeoJson
  • [wikipedia] Json issu de l’API de Wikidata
  • [datagouv] Json issu de l’API de Data.gouv
  • [osm] Json issu de l’API de Open Street Map
  • [ods] JSon issu de l’API de OpenDataSoft (on intéroge uniquement la base SIRENE)
  • [datanova] Json issu de l’API de Datanova
  • [poleemploi] Json issu de l’API de Pôle Emploi

  • [educstruct] Json issu de l’API de ScanR(structures de recherche)
  • [educetab] Json issu de l’API de ScanR (établissements impliqués dans la recherche)
  • [educmembre] Json issu de l’API de ScanR (membre des universités de France)
  • [educecole] Json issu de l’API de ScanR (école doctorales accrédités)

Obtenir l’ontologie ph pour un type d’élément donnée via une url

Structure

/ph/communecter/api/convert/geojson/type/[organizations || citoyens || events || projects]?url="http://votreurl"

Exemple

https://www.communecter.org/api/convert/geojson/type/organizations?url=http://umap.openstreetmap.fr/en/datalayer/306808/

Cas particuliers : les uMap

Structure

L’API permet de convertir les données geojson d’une uMap donnée via la paramètre “url”.

On peut aussi mettre en paramètre l’URL courte d’une uMap (visible en appuyant sur le bouton partager à gauche de la uMap). Attention pour le moment, il faut que l’url soit en “http” et non pas en “https”, retirez le “s” si tel est le cas.

https://www.communecter.org/api/convert/geojson/type/organizations?url=[URL]

Exemples

URL longue :

https://www.communecter.org/api/convert/geojson/type/organizations?url=http://umap.openstreetmap.fr/en/datalayer/306808/

URL Courte :

/ph/communecter/api/convert/type/organizations?url=http://u.osmfr.org/m/62176/

Obtenir l’ontologie ph pour un type d’élément donnée via un fichier

Il faut envoyer à l’API le paramètre “file” via méthode POST. (en utilisant curl ou RESTED par exemple).

Obtenir l’ontologie ph pour une url intérrogeant une API externe

/ph/communecter/api/convert/[type interop]?url="http://votreurlinterop"

Wikidata

Structure

/ph/api/convert/wikipedia?url=https://www.wikidata.org/wiki/Special:EntityData/[wikidataID].json

Exemple

Ville de Saint-Louis - WikidataID = Q47045 :

/ph/api/convert/wikipedia?url=https://www.wikidata.org/wiki/Special:EntityData/Q47045.json

Data.gouv

Structure

/ph/api/convert/datagouv?url=https://www.data.gouv.fr/api/1/spatial/zone/fr/town/[insee]/datasets

Exemple

Ville de Rodez - Code INSEE 12202 :

/ph/api/convert/datagouv?url=https://www.data.gouv.fr/api/1/spatial/zone/fr/town/12202/datasets

On va pouvoir ensuite obtenir l’ensemble des datasets de la ville mentionnée et au final parcourir l’ensemble des différents jeux de données de la ville.

OpenStreetMap

Structure

/ph/api/convert/osm?url=http://overpass-api.de/api/interpreter?data=[out:json];node[%22name%22](poly:[geoshape]);out;

Exemple

Ville de Saint-Louis :

/ph/api/convert/osm?url=http://overpass-api.de/api/interpreter?data=[out:json];node[%22name%22](poly:%22-21.303505996763%2055.403919253998%20-21.292626813288%2055.391189163162%20-21.282029142394%2055.381522536523%20-21.256155186265%2055.392395046639%20-21.232012804782%2055.387888015185%20-21.211100938923%2055.390619722192%20-21.199480966855%2055.382654775478%20-21.185882138486%2055.385961778627%20-21.173346518752%2055.389949958731%20-21.16327583783%2055.399563417107%20-21.14709868917%2055.405379688232%20-21.166028899095%2055.414700890276%20-21.184085220909%2055.432085218794%20-21.190290936422%2055.440880800108%20-21.195166490948%2055.462318490892%20-21.237553168259%2055.459769285867%20-21.258726107298%2055.463692709631%20-21.286021128961%2055.455515913879%20-21.294777773557%2055.419916682666%20-21.303505996763%2055.403919253998%22);out;

On va pouvoir filtrer l’enssemble des noeuds qui sont présent dans le geoshape fourni et enfin filtrer tous les noeuds qui possède au moins le tag “name”.

OpenDataSoft

Structure

On va pouvoir filtrer l’ensemble des éléments présent dans le geofilter fournit. On peut filtrer les éléments par thématique en mentionnant des refine.libapen dans l’url.

/ph/api/convert/ods?url=https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&sort=datemaj&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=[geofilter]

Exemples

Ville de Saint-Louis :

/ph/api/convert/ods?url=https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&sort=datemaj&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=(-21.303505996763,55.403919253998),(-21.292626813288,55.391189163162),(-21.282029142394,55.381522536523),(-21.256155186265,55.392395046639),(-21.232012804782,55.387888015185),(-21.211100938923,55.390619722192),(-21.199480966855,55.382654775478),(-21.185882138486,55.385961778627),(-21.173346518752,55.389949958731),(-21.16327583783,55.399563417107),(-21.14709868917,55.405379688232),(-21.166028899095,55.414700890276),(-21.184085220909,55.432085218794),(-21.190290936422,55.440880800108),(-21.195166490948,55.462318490892),(-21.237553168259,55.459769285867),(-21.258726107298,55.463692709631),(-21.286021128961,55.455515913879),(-21.294777773557,55.419916682666),(-21.303505996763,55.403919253998)

L’exemple suivant fait la même chose que l’exemple précédent sauf qu’il filtre tous les éléments qui sont dans le secteur d’activité : Pratique dentaire

/ph/api/convert/ods?url=https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)&refine.libapen=Pratique%20dentaire

Datanova

Structure

On récupère l’ensemble des enseignes La Poste présent dans le geofilter donné.

/ph/api/convert/datanova?url=https://datanova.laposte.fr/api/records/1.0/search/?dataset=laposte_poincont&rows=30&start=0&geofilter.polygon=[geofilter]

Exemple

Ville de Bordeaux

/ph/api/convert/datanova?url=https://datanova.laposte.fr/api/records/1.0/search/?dataset=laposte_poincont&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Pôle Emploi

Introduction

  • On demande à avoir un token :
    https://entreprise.pole-emploi.fr/connexion/oauth2/access_token?realm=%2Fpartenaire
    

avec en paramètre POST :

  • grant_type = client_credential
  • client_id = [identifiant]
  • scope = [mot de passe]

Ensuite on lance la requête :

https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%27[insee]%27%

Exemple (ville de Saint-Louis) :

https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%2797414%27%

Il faut indiquer en paramètre POST ses identifiants du Pôle Emploi (inscription sur emploi-store-dev.fr) et aussi mettre un token dans le HEADER : “Authorization: Bearer [token]”.

Structure

L’url à passer en paramètre est du type :

/ph/api/convert?url=https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%27[insee]%27%

Exemples

Ville de Saint-Louis :

/ph/api/convert?url=https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5%2Df342%2D4223%2D9c51%2D72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%2797414%27%

ScanR

Structure

ScanR comporte 4 jeux de données que l’on peut intéroger :

Structure de recherche publique :

/ph/api/convert/educstruct?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-structures-recherche-publiques-actives&facet=numero_national_de_structure&facet=annee_de_creation&facet=tutelles&facet=type_de_tutelle&facet=nature_de_tutelle&facet=nature_de_structure&facet=type_de_structure&facet=niveau_de_structure&facet=domaine_scientifique&facet=panel_erc&facet=theme_de_recherche&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=comue&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=[geofilter]

Etablissement impliqués dans la recherche :

/ph/api/convert/educetab?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-etablissements-publics-prives-impliques-recherche-developpement&facet=siren&facet=libelle&facet=date_de_creation&facet=categorie&facet=libelle_ape&facet=tranche_etp&facet=categorie_juridique&facet=wikidata&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=badge&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=[geofilter]

Membres des universités de France :

/ph/api/convert/educmembre?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-iuf-les-membres&rows=30&start=0&geofilter.polygon=[geofilter]

Liste des écoles doctorales accréditées :

/ph/api/convert/educecole?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-ecoles_doctorales_annuaire&facet=numero&facet=groupe_disciplinaire&facet=toutes_les_disciplines&facet=discipline_principale&facet=localisation&facet=liste_tous_etablissements&facet=laboratoires_rattaches&facet=annee_de_creation&facet=annee_accreditation&facet=etablissement_support&facet=liste_codes_tous_etablissements&facet=identifiants_des_laboratoires&facet=libelle_unite_urbaine&facet=libelle_departement&facet=libelle_academie&facet=libelle_region&rows=30&start=0&geofilter.polygon=[geofilter]

Exemples

Structure de recherche publique de Saint-Louis :

/ph/api/convert/educstruct?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-structures-recherche-publiques-actives&facet=numero_national_de_structure&facet=annee_de_creation&facet=tutelles&facet=type_de_tutelle&facet=nature_de_tutelle&facet=nature_de_structure&facet=type_de_structure&facet=niveau_de_structure&facet=domaine_scientifique&facet=panel_erc&facet=theme_de_recherche&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=comue&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Etablissement impliqués dans la recherche de Bordeaux :

/ph/api/convert/educetab?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-etablissements-publics-prives-impliques-recherche-developpement&facet=siren&facet=libelle&facet=date_de_creation&facet=categorie&facet=libelle_ape&facet=tranche_etp&facet=categorie_juridique&facet=wikidata&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=badge&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Membres des universités de France de Bordeaux :

/ph/api/convert/educmembre?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-iuf-les-membres&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Liste des écoles doctorales accréditées de Bordeaux :

/ph/api/convert/educecole?url=https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-ecoles_doctorales_annuaire&facet=numero&facet=groupe_disciplinaire&facet=toutes_les_disciplines&facet=discipline_principale&facet=localisation&facet=liste_tous_etablissements&facet=laboratoires_rattaches&facet=annee_de_creation&facet=annee_accreditation&facet=etablissement_support&facet=liste_codes_tous_etablissements&facet=identifiants_des_laboratoires&facet=libelle_unite_urbaine&facet=libelle_departement&facet=libelle_academie&facet=libelle_region&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

REST Services

  • Almost every actions could be exposed as a REST service.

Register a new user

  • url : xxxxx.communecter.org/communecter/person/register
  • params dans le post :
    • name string
    • username string. Unique on the plateforme
    • email well formated email
    • cp existing postalCode
    • geoPosLatitude float
    • geoPosLongitude float
    • pwd : non encrypted password
    • city String Insee code
    • pendingUserId String. Si l’utilisateur est déjà en base de données (il a été invité et son profil est temporaire), son identifiant est passé en paramètre. Dans ce cas l’utilisateur n’est pas créé, mais il est mis à jour.
  • Retour (json) :
    • result boolean
    • msg String : message d’erreur
    • id identifiant de l’utilisateur nouvellement créé.
  • Fonctionnement :
    • L’utilisateur est créé en base de données.
    • Il n’est pas encore validé et ne pourra pas se logguer
    • Un mail lui est envoyé avec un lien de validation pour activer son compte
    • En version bêta, il y a un flag betaTester qui est positionné pour filtrer les utilisateurs bêta testeur. Par défaut, il est à false.

Le code utilisé est ici : citizenToolKit/controllers/person/RegisterAction.php (lien mort)

CoPi

Une instance de Communecter installée sur une Raspberry Pi

Features

  • Installation de CO sur une debian (apache, mongoDb)
  • Un COPI peut se connecter à un autre CoPi

Matériel disponible

  • CO Light
  • Raspberry Pi
  • Micro
  • Camera
  • Mode Connecté
  • ConnecTIC : (Domino, 3G, LAN, Partage de connections)

CoPiMix

Agrégateur de source CoPi

CoPi Copy

Sauvegarde d’instance CoPi

CoPi Bank

Système de monétisation interne à une organisation

Interopérabilité

À fusionner avec [[COSM]] et [[Copédia]].

Vue d’ensemble du chantier sur l’interopérabilité

À gauche, la liste des sources extérieurs sur lesquelles on récupère les données :

  • Wikidata
  • Wikipédia
  • OpenStreetMap
  • OpenDataSoft (la base SIRENE)
  • Data.gouv
  • Datanova (les enseignes La Poste)
  • Pôle Emploi
  • SCANR

Au milieu, le processus de Conversion des données (détails sur le prochain schéma)

A droite, l’affichage des données converties sur le site de Communecter ainsi que des exemple d’usage de ces données par des sites extérieurs.

Conversion des données sémantiques

We interoperate with

using their API

Wikidata

For any city, We retreive main information available on Wikidata

The process is the following :

  • We choose a geographic scope (a country) to filter
  • We call our own semantic convert system (doc avaible here) :

The convert system will interrogate the Wikidata API to get data in JSON.

The next exemple is the data for the city of Saint-Denis, capital city of Réunion island :

And convert this data in the pivot language named “PH onthology”

/ph/api/convert/wikipedia?url=https://www.wikidata.org/wiki/Special:EntityData/Q47045.json

Exemple Wikidata here

Here are the mapping

Source’s data PH onthology
itemLabel.value name
coor.latitude geo.latitude
coor.longitude geo.longitude
item.value url
itemDescription.value description
  • We’ll want to contributing back any extra data we can offer with COpédia (coming soon)

DBpedia

  • For any city, We retreive main information available on Wikipedia

OpenStreetMap

For any city, we retreive main information avaible on OSM

The process is the following :

  • We choose a geographic scope (a country) to filter
  • We call our own semantic convert system (doc avaible here) :

The next exemple is all the OSM data of the city of Saint-Louis :

http://overpass-api.de/api/interpreter?data=[out:json];node[%22name%22](poly:%22-21.303505996763%2055.403919253998%20-21.292626813288%2055.391189163162%20-21.282029142394%2055.381522536523%20-21.256155186265%2055.392395046639%20-21.232012804782%2055.387888015185%20-21.211100938923%2055.390619722192%20-21.199480966855%2055.382654775478%20-21.185882138486%2055.385961778627%20-21.173346518752%2055.389949958731%20-21.16327583783%2055.399563417107%20-21.14709868917%2055.405379688232%20-21.166028899095%2055.414700890276%20-21.184085220909%2055.432085218794%20-21.190290936422%2055.440880800108%20-21.195166490948%2055.462318490892%20-21.237553168259%2055.459769285867%20-21.258726107298%2055.463692709631%20-21.286021128961%2055.455515913879%20-21.294777773557%2055.419916682666%20-21.303505996763%2055.403919253998%22);out%2030;

Here are the mapping

Source’s data PH onthology
tags.name name
lat geo.latitude
long geo.longitude
type type
tags.amenity tags.0

Exemple OSM here

  • We’ll want to contributin back any extra data we can offer with COSM (coming soon)

Data.gouv

For any city, we retreive main information of the organizations placed in this city

The process is the following :

  • We choose a geographic scope (a country) to filter
  • We call our own semantic convert system (doc avaible here) :

The module will find all the organizations placed in the geographic scope filter and then extract all the data in the differents datasets available.

The next exemple is all the data of the different structure of Méto-France, meteorological center of France.

https://www.data.gouv.fr/api/1/datasets/54a12162c751df720a04805a/

Here are the mapping

Source’s data PH onthology
slug name
page url
tags[] tag[]
item.value url
owner creator

Exemple Data.gouv here

Pôle emploi

For any city, we retreive all the job offer. (no exact localisation of the job place)

The process is the following :

  • We choose a geographic scope (a country) to filter
  • We call our own semantic convert system (doc avaible here) :

To get data with the Pôle emploi’s API, a token is needed.

The next exemple fetch all the job offer of the city of Saint-Louis.

https://api.emploi-store.fr/partenaire/infotravail/v1/datastore_search_sql?sql=SELECT%20%2A%20FROM%20%22421692f5-f342-4223-9c51-72a27dcaf51e%22%20WHERE%20%22CITY_CODE%22=%2797414%27%20LIMIT%2030

OpenDataSoft (SIREN database)

For any city, we retreive all the organizations and the association of the SIREN’s database.

The process is the following :

  • We choose a geographic scope (a country) to filter
  • We call our own semantic convert system (doc avaible here) :

The next exemple will fetch all the data in the SIRENE database for the city of Saint-Louis.

https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&facet=categorie&facet=proden&facet=libapen&facet=siege&facet=libreg_new&facet=saisonat&facet=libtefen&facet=depet&facet=libnj&facet=libtca&facet=liborigine&rows=30&start=0&geofilter.polygon=(-21.303505996763,55.403919253998),(-21.292626813288,55.391189163162),(-21.282029142394,55.381522536523),(-21.256155186265,55.392395046639),(-21.232012804782,55.387888015185),(-21.211100938923,55.390619722192),(-21.199480966855,55.382654775478),(-21.185882138486,55.385961778627),(-21.173346518752,55.389949958731),(-21.16327583783,55.399563417107),(-21.14709868917,55.405379688232),(-21.166028899095,55.414700890276),(-21.184085220909,55.432085218794),(-21.190290936422,55.440880800108),(-21.195166490948,55.462318490892),(-21.237553168259,55.459769285867),(-21.258726107298,55.463692709631),(-21.286021128961,55.455515913879),(-21.294777773557,55.419916682666),(-21.303505996763,55.403919253998)

Here are the mapping

Source’s data PH onthology
fields.l1_declaree name
fields.categorie type
fields.siret shortDescription
fields.coordonnees.0 geo.latitude
fields.coordonnees.1 geo.longitude
fields.libapen tags.0

Exemple OpenDataSoft here

ScanR ( National Education )

For any city, we retreive main information from the national education of France

The process is the following :

  • We choose a geographic scope (a country) to filter
  • We call our own semantic convert system (doc avaible here) :

The next exemple fetch all the actives research strutures of the city of Bordeaux :

https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-etablissements-publics-prives-impliques-recherche-developpement&facet=siren&facet=libelle&facet=date_de_creation&facet=categorie&facet=libelle_ape&facet=tranche_etp&facet=categorie_juridique&facet=wikidata&facet=commune&facet=unite_urbaine&facet=departement&facet=region&facet=pays&facet=badge&facet=region_avant_2016&rows=30&start=0&geofilter.polygon=(44.810795852605,-0.5738778170842),(44.817148298105,-0.57643460444186),(44.823910193873,-0.58695822406613),(44.818476638462,-0.60304723869607),(44.822474304509,-0.61064859861704),(44.824937843733,-0.61415033833008),(44.835177466959,-0.61079419661495),(44.841384923705,-0.62771243191386),(44.860667021743,-0.63833642556746),(44.871658097695,-0.63105127891779),(44.86227970331,-0.61630176568479),(44.854215265872,-0.59460939385687),(44.865671076253,-0.57646019656194),(44.869188961886,-0.57608874140575),(44.909402227434,-0.58088555560083),(44.908480410411,-0.57648917779388),(44.916666965125,-0.54773554113942),(44.889099273803,-0.53553255107571),(44.869138522062,-0.54141014437767),(44.868086689933,-0.53680669655034),(44.861267174723,-0.53784686147751),(44.848134506953,-0.53761462401784),(44.842390488778,-0.5422310311368),(44.836291776079,-0.54665943781219),(44.829021270567,-0.53642317794196),(44.822772234064,-0.53766321563778),(44.813135278103,-0.55606047183132),(44.810795852605,-0.5738778170842)

Here are the mapping :

Source’s data PH onthology
fields.libelle name
fields.site_web shortDescription
fields.geolocalisation.0 geo.latitude
fields.geolocalisation.1 geo.longitude

Exemple ScanR here

  • Datasets used :
    • Public or private research and development structures
    • Member of the university institute of France

Datanova ( La Poste )

For any city, we retreive the location of all buildings of La Poste

The process is the following :

  • We choose a geographic scope (a country) to filter
  • We call our own semantic convert system (doc avaible here) :

The next exemple will fetch all La Poste buildings localised in the city of Saint-Louis.

https://datanova.laposte.fr/api/records/1.0/search/?dataset=laposte_poincont&rows=30&start=0&geofilter.polygon=(-21.303505996763,55.403919253998),(-21.292626813288,55.391189163162),(-21.282029142394,55.381522536523),(-21.256155186265,55.392395046639),(-21.232012804782,55.387888015185),(-21.211100938923,55.390619722192),(-21.199480966855,55.382654775478),(-21.185882138486,55.385961778627),(-21.173346518752,55.389949958731),(-21.16327583783,55.399563417107),(-21.14709868917,55.405379688232),(-21.166028899095,55.414700890276),(-21.184085220909,55.432085218794),(-21.190290936422,55.440880800108),(-21.195166490948,55.462318490892),(-21.237553168259,55.459769285867),(-21.258726107298,55.463692709631),(-21.286021128961,55.455515913879),(-21.294777773557,55.419916682666),(-21.303505996763,55.403919253998)

Here are the mapping

Source’s data PH onthology
fields.libelle_du_site name
recordid type
fields.adresse address.streetAddress
fields.latlong.0 geo.latitude
fields.latlong.1 geo.longitude
fields.libapen tags.0

Exemple Datanova here

Smart Citizen (coming soon)

  • onclick : we’ll show all SCK kits for a given city

Umaps (coming soon)

  • POI’s of type geoJson, on click we show the content on our map

WordPress RSS (coming soon)

  • any WP blog’s RSS can be pluggued to an elements wall

using an iframe

FramaPads

  • users can use Framapads from inside CO(simple Iframe)